Release store in C2 putfield

David Holmes david.holmes at
Thu Sep 4 10:36:12 UTC 2014

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.

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.)


> Andrew.

More information about the hotspot-dev mailing list