< prev index next >

src/hotspot/share/oops/instanceKlass.cpp

Print this page

        

*** 436,445 **** --- 436,447 ---- _nest_host_index(0), _nest_host(NULL), _static_field_size(parser.static_field_size()), _nonstatic_oop_map_size(nonstatic_oop_map_size(parser.total_oop_map_count())), _itable_len(parser.itable_size()), + _init_thread(NULL), + _init_state(allocated), _reference_type(parser.reference_type()) { set_vtable_length(parser.vtable_size()); set_kind(kind); set_access_flags(parser.access_flags());
*** 1069,1083 **** --- 1071,1087 ---- void InstanceKlass::set_initialization_state_and_notify(ClassState state, TRAPS) { Handle h_init_lock(THREAD, init_lock()); if (h_init_lock() != NULL) { ObjectLocker ol(h_init_lock, THREAD); + set_init_thread(NULL); // reset _init_thread before changing _init_state set_init_state(state); fence_and_clear_init_lock(); ol.notify_all(CHECK); } else { assert(h_init_lock() != NULL, "The initialization state should never be set twice"); + set_init_thread(NULL); // reset _init_thread before changing _init_state set_init_state(state); } } Klass* InstanceKlass::implementor() const {
*** 3708,3717 **** --- 3712,3722 ---- #ifdef ASSERT bool good_state = is_shared() ? (_init_state <= state) : (_init_state < state); assert(good_state || state == allocated, "illegal state transition"); #endif + assert(_init_thread == NULL, "should be cleared before state change"); _init_state = (u1)state; } #if INCLUDE_JVMTI
< prev index next >