Request for reviews (L): 7125896: Eliminate nested locks
Vladimir Kozlov
vladimir.kozlov at oracle.com
Fri Dec 30 11:23:05 PST 2011
Christian Thalinger wrote:
> I think the changes are good. The only thing I don't like is the raw use of _slot:
>
> + (BoxLockNode::boxnode(lock->box_node())->_slot ==
> + BoxLockNode::boxnode(unlock->box_node())->_slot)) {
Agree. I changed _slot (and other BoxLock fields) to private and replaced above
code with new BoxLock's method call:
BoxLockNode::same_slot(lock->box_node(), unlock->box_node())
I also did some methods renaming and updated webrev.
Thanks,
Vladimir
>
> -- Chris
>
> On Dec 29, 2011, at 10:20 PM, Vladimir Kozlov wrote:
>
>> http://cr.openjdk.java.net/~kvn/7125896/webrev
>>
>> 7125896: Eliminate nested locks
>>
>> Nested locks elimination done before lock nodes expansion by looking for outer locks of the same object. Commoning (GVN) of BoxLock nodes is switched off because nested locks elimination requires separate BoxLock node for each locked region to generated correct debug info for deoptimization. As result there could be merges (and Phi nodes) of BoxLock nodes. One such merge generated by ciTypeFlow (cloning loop head) is avoided but there could be other cases so new code is added to handle it.
>>
>> New code is under new product flag EliminateNestedLocks.
>>
>> Also added missed KILL effect for box register in fastlock and fastunlock mach nodes definitions.
>>
>> Tested with full CTW, nsk, jtreg tests, refworkload.
>>
>> Thanks,
>> Vladimir
>
More information about the hotspot-compiler-dev
mailing list