Request for reviews (S): 6681646: Relocking of a scalar replaced object during deoptimization is broken

Vladimir Kozlov Vladimir.Kozlov at Sun.COM
Mon Mar 31 16:07:57 PDT 2008


Sorry, I sent incorrect link and bug id (too many '6').

http://webrev.invokedynamic.info/kvn/6681646/index.html

Fixed 6681646: Relocking of a scalar replaced object during deoptimization is broken

Vladimir

Vladimir Kozlov wrote:
> I want this for HS12 (if approved).
> 
> http://webrev.invokedynamic.info/kvn/6680665/index.html
> 
> Fixed 66681646: Relocking of a scalar replaced object during 
> deoptimization is broken
> 
> Problem:
> The test failed when trying exit the monitor after deoptimization
> of the compiled method with eliminated lock.
> 
> When scalarized object is reallocated the mark word is set to
> klass->prototype_header() by default. Which can have biased pattern.
> Also if the object is not scalarized but only thread-local
> the method revoke_biases_of_monitors() will relock it
> before relock_objects() is called.
> 
> The lock should not be biased in order to safely move
> the displaced mark word from the compiled frame
> to the vframeArray and back to the interpreted frame.
> 
> 
> Solution:
> Add the check into relock_objects() to do nothing that if an object
> is locked already.
> Call fast_enter() in relock_objects() to relock an object - it
> will revoke biased lock if needed.
> Put reallocate and relock code under (fr->scope() != NULL) check
> to avoid reference through NULL.
> 
> Reviewed by:
> Fix verified (y/n): y, failed test cases.
> 
> Other testing:
> JPRT, CTW, NSK tests
> 




More information about the hotspot-compiler-dev mailing list