src/share/vm/prims/jvmtiExport.cpp

Print this page

        

*** 572,587 **** Klass* klass = (_h_class_being_redefined == NULL) ? NULL : (*_h_class_being_redefined)(); if (_load_kind != jvmti_class_load_kind_load && klass != NULL) { ModuleEntry* module_entry = InstanceKlass::cast(klass)->module(); assert(module_entry != NULL, "module_entry should always be set"); if (module_entry->is_named() && ! module_entry->jlrM_module() != NULL) { // Add read edges to the unnamed modules of the bootstrap and app class loaders Handle class_module(_thread, JNIHandles::resolve(module_entry->jlrM_module())); // Obtain j.l.r.Module JvmtiExport::add_default_read_edges(class_module, _thread); } } // Clear class_being_redefined flag here. The action // from agent handler could generate a new class file load // hook event and if it is not cleared the new event generated // from regular class file load could have this stale redefined // class handle info. --- 572,591 ---- Klass* klass = (_h_class_being_redefined == NULL) ? NULL : (*_h_class_being_redefined)(); if (_load_kind != jvmti_class_load_kind_load && klass != NULL) { ModuleEntry* module_entry = InstanceKlass::cast(klass)->module(); assert(module_entry != NULL, "module_entry should always be set"); if (module_entry->is_named() && ! module_entry->jlrM_module() != NULL && ! !module_entry->has_default_read_edges()) { ! if (!module_entry->set_has_default_read_edges()) { ! // We won a potential race. // Add read edges to the unnamed modules of the bootstrap and app class loaders Handle class_module(_thread, JNIHandles::resolve(module_entry->jlrM_module())); // Obtain j.l.r.Module JvmtiExport::add_default_read_edges(class_module, _thread); } } + } // Clear class_being_redefined flag here. The action // from agent handler could generate a new class file load // hook event and if it is not cleared the new event generated // from regular class file load could have this stale redefined // class handle info.