RFR(S) Contended Locking fast enter bucket (8061553)
Daniel D. Daugherty
daniel.daugherty at oracle.com
Thu Oct 30 22:50:28 UTC 2014
Greetings,
I have the Contended Locking fast enter bucket ready for review.
The code changes in this bucket are primarily a quick_enter()
function that works on inflated but uncontended Java monitors.
This quick_enter() function is used on the "slow path" for Java
Monitor enter operations when the built-in "fast path" (read
assembly code) doesn't work.
This work is being tracked by the following bug ID:
JDK-8061553 Contended Locking fast enter bucket
https://bugs.openjdk.java.net/browse/JDK-8061553
Here is the webrev URL:
http://cr.openjdk.java.net/~dcubed/8061553-webrev/0-jdk9-hs-rt/
Here is the JEP link:
https://bugs.openjdk.java.net/browse/JDK-8046133
8061553 summary of changes:
macroAssembler_sparc.cpp: MacroAssembler::compiler_lock_object()
- clean up spacing around some
'ObjectMonitor::owner_offset_in_bytes() - 2' uses
- remove optional (EmitSync & 64) code
- change from cmp() to andcc() so icc.zf flag is set
macroAssembler_x86.cpp: MacroAssembler::fast_lock()
- remove optional (EmitSync & 2) code
- rewrite LP64 inflated lock code that tries to CAS in
the new owner value to be more efficient
interfaceSupport.hpp:
- add JRT_BLOCK_NO_ASYNC to permit splitting a
JRT_BLOCK_ENTRY into two pieces.
sharedRuntime.cpp: SharedRuntime::complete_monitor_locking_C()
- change entry type from JRT_ENTRY_NO_ASYNC to JRT_BLOCK_ENTRY
to permit ObjectSynchronizer::quick_enter() call
- add JRT_BLOCK_NO_ASYNC use if the quick_enter() doesn't work
to revert to JRT_ENTRY_NO_ASYNC-like semantics
synchronizer.[ch]pp:
- add ObjectSynchronizer::quick_enter() for entering an
inflated but unowned Java monitor without thread state
changes
Testing:
- Aurora Adhoc RT/SVC baseline batch
- JPRT test jobs
- MonitorEnterStresser micro-benchmark (in process)
- CallTimerGrid stress testing (in process)
- Aurora performance testing:
- out of the box for the "promotion" and 32-bit server configs
- heavy weight monitors for the "promotion" and 32-bit server configs
(-XX:-UseBiasedLocking -XX:+UseHeavyMonitors)
(in process)
Thanks, in advance, for any comments, questions or suggestions.
Dan
More information about the hotspot-runtime-dev
mailing list