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