RFR: 8296170: Refactor stack-locking path in C2_MacroAssembler::fast_unlock()

Roman Kennke rkennke at openjdk.org
Wed Nov 2 11:41:59 UTC 2022


The code in C2_MacroAssembler::fast_unlock() has several (minor) issues: 
 - The stack-locking path for x86_32 is not under UseHeavyMonitors - it would be executed even when stack-locking is disabled. 
 - The stack-locking paths are the same for x86_32 and x86_64 - they can be merged into a common path. 
 - In x86_32 path, we call get_thread(boxReg) which is totally bogus because we clear boxReg right afterwards with xorptr(boxReg, boxReg). 
 - In x86_32 path, the CheckSucc label is identical to the DONE label, and in-fact CheckSucc is only ever really used in the x86_64 path and can be moved there.

Testing:
 - [x] tier1 (x86_32, x86_64)
 - [x] tier2 (x86_32, x86_64)

-------------

Commit messages:
 - 8296170: Refactor stack-locking path in C2_MacroAssembler::fast_unlock()

Changes: https://git.openjdk.org/jdk/pull/10936/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=10936&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8296170
  Stats: 32 lines in 1 file changed: 8 ins; 20 del; 4 mod
  Patch: https://git.openjdk.org/jdk/pull/10936.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/10936/head:pull/10936

PR: https://git.openjdk.org/jdk/pull/10936


More information about the hotspot-compiler-dev mailing list