RFR (M): 8223213: Implement fast class initialization checks on x86-64
vladimir.x.ivanov at oracle.com
Tue May 28 11:40:31 UTC 2019
> Are these assertions safe?
> + assert(method()->needs_clinit_barrier(), "barrier not needed");
> + assert(method()->holder()->is_being_initialized(), "barrier not needed");
> Can it happen that initialization concurrently completes before they are evaluated?
Good point. Even though ciInstanceKlass caches initialization state of
the corresponding InstanceKlass, it seems there's a possibility that the
state is updated during the compilation (see
ciInstanceKlass::update_if_shared). I enhanced the asserts to check that
initialization has been stated.
> A small suggestion for x86 TemplateTable::invokeinterface:
> It'd be nice to replace load of interface klass by your new load_method_holder.
More information about the hotspot-compiler-dev