Release store in C2 putfield

Andrew Haley aph at redhat.com
Thu Sep 4 13:13:37 UTC 2014


On 09/04/2014 11:36 AM, David Holmes wrote:
> On 4/09/2014 8:22 PM, Andrew Haley wrote:
>> On 09/04/2014 11:15 AM, David Holmes wrote:
>>> I'll also add that a "barrier" at the end of construction is not
>>> necessarily sufficient as Bertrand has already mentioned, if 'this' can
>>> escape.
>>
>> Can you provide us with an example of this which isn't a Java
>> programmer error?
> 
> To clarify there are two sets of object state we are concerned with:
> - internal VM state that ensures the platform safety guarantees are met 
> (ie all fields default initialized, valid vtable and object header seen)
> - Java level state
> 
> The first requires a suitable "barrier" before Java constructor code is 
> executed so that Java programmer errors do not lead to crashes. So a 
> barrier at the end of construction is not sufficient.

Yes, I've got both of those.

> If you have the barrier at the start of construction then you don't need 
> a barrier at the end except potentially as part of the freeze semantic 
> for final fields. (Though updated JMM in Java 9 may indeed require such 
> a barrier.)

Good.

Thanks,
Andrew.




More information about the hotspot-dev mailing list