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