[13] RFR (XS): 8225141: Better handling of classes in error state in fast class initialization checks

Vladimir Ivanov vladimir.x.ivanov at oracle.com
Fri May 31 20:53:35 UTC 2019


http://cr.openjdk.java.net/~vlivanov/8225141/webrev.00/
https://bugs.openjdk.java.net/browse/JDK-8225141

Fast class initialization checks don't properly handle classes in error 
state when performed from (previously) initializing thread.

One way to fix it is to add one more fast path check 
(InstanceKlass::_init_state == being_initialized) into the barrier, but 
that would require significant changes, since both newly introduced 
checks (JDK-8223213 [1]) and existing C1 checks should be changed.

What I propose is to set InstanceKlass::_init_thread only for the 
duration when the klass is in being_initialized state and reset it back 
to NULL when changing class state. It makes existing "_init_thread == 
current_thread" check equivalent to "_init_state == being_initialized && 
_init_thread == current_thread".

Testing: hs-precheckin-comp, tier1-4

Best regards,
Vladimir Ivanov

[1] https://bugs.openjdk.java.net/browse/JDK-8223213


More information about the hotspot-runtime-dev mailing list