8212879: Make JVMTI TagMap table concurrent

Co-authored-by: Kim Barrett <kbarrett@openjdk.org>
Co-authored-by: Coleen Phillimore <coleenp@openjdk.org>
Reviewed-by: stefank, ihse, zgu, eosterlund, sspitsyn, kbarrett
This commit is contained in:
Coleen Phillimore 2020-11-19 14:30:02 +00:00
parent 3a4b90f086
commit ba721f5f2f
49 changed files with 904 additions and 1127 deletions

View file

@ -680,16 +680,24 @@ void JvmtiExport::post_vm_start() {
}
static OopStorage* _jvmti_oop_storage = NULL;
static OopStorage* _weak_tag_storage = NULL;
OopStorage* JvmtiExport::jvmti_oop_storage() {
assert(_jvmti_oop_storage != NULL, "not yet initialized");
return _jvmti_oop_storage;
}
OopStorage* JvmtiExport::weak_tag_storage() {
assert(_weak_tag_storage != NULL, "not yet initialized");
return _weak_tag_storage;
}
void JvmtiExport::initialize_oop_storage() {
// OopStorage needs to be created early in startup and unconditionally
// because of OopStorageSet static array indices.
_jvmti_oop_storage = OopStorageSet::create_strong("JVMTI OopStorage");
_weak_tag_storage = OopStorageSet::create_weak("JVMTI Tag Weak OopStorage");
_weak_tag_storage->register_num_dead_callback(&JvmtiTagMap::gc_notification);
}
void JvmtiExport::post_vm_initialized() {
@ -1479,7 +1487,6 @@ void JvmtiExport::post_thread_end(JavaThread *thread) {
}
void JvmtiExport::post_object_free(JvmtiEnv* env, jlong tag) {
assert(SafepointSynchronize::is_at_safepoint(), "must be executed at safepoint");
assert(env->is_enabled(JVMTI_EVENT_OBJECT_FREE), "checking");
EVT_TRIG_TRACE(JVMTI_EVENT_OBJECT_FREE, ("[?] Trg Object Free triggered" ));
@ -2636,10 +2643,6 @@ void JvmtiExport::clear_detected_exception(JavaThread* thread) {
}
}
void JvmtiExport::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* f) {
JvmtiTagMap::weak_oops_do(is_alive, f);
}
// Onload raw monitor transition.
void JvmtiExport::transition_pending_onload_raw_monitors() {
JvmtiPendingMonitors::transition_raw_monitors();