JDK-6462850 : generate biased locking code in C2 ideal graph
Type:Enhancement
Component:hotspot
Sub-Component:compiler
Affected Version:7
Priority:P4
Status:Resolved
Resolution:Fixed
OS:solaris_10
CPU:x86
Submitted:2006-08-23
Updated:2010-04-03
Resolved:2008-11-19
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
The short branches could be used in biased locking code on x86 and amd64
to reduce the code size.
Use this bug for next optimization:
Generate biased locking code in C2 ideal graph instead of
using FastLock/FastUnlock mach nodes.
Comments
SUGGESTED FIX
Solution:
- Inline biased locking code in C2 ideal graph during
macro nodes expansion. Use new flag UseOptoBiasInlining to gate
new code. Set the flag ON by default.
- Add new ideal node StoreIConditional and use existing
StoreLConditional node for cas stores into object's mark word.
Fix implementation of StoreLConditional for that.
- Allow tlsLoadP mach node to return a value in any P
register on x86 32-bits (instead of only EAX).
- Added new OR mach node to avoid casting of TLS pointer.
Additional fixes:
- Delay a memory node igvn transformation until its address
is processed (the fix for the problem described in 6759776).
- Add missing check for the lock code on x86 into
Assembler::locate_operand().
- Pin a SafePointScalarObject node to the control edge of
the SafePoint node for which it was generated.
- Fix size's format in OutOfMemoryError message.