8222224: vmTestbase/nsk/jvmti/SingleStep/singlestep001/TestDescription.java fails
Reviewed-by: sspitsyn, jcbeyler, amenkov
This commit is contained in:
parent
2468ac91ee
commit
32848d8166
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2003, 2018, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2003, 2019, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -57,7 +57,7 @@ static volatile jint result = PASSED;
|
||||
static jvmtiEnv *jvmti = NULL;
|
||||
static jvmtiEventCallbacks callbacks;
|
||||
|
||||
static int vm_started = 0;
|
||||
static volatile int callbacksEnabled = NSK_FALSE;
|
||||
static jrawMonitorID agent_lock;
|
||||
|
||||
static void setBP(jvmtiEnv *jvmti_env, JNIEnv *env, jclass klass) {
|
||||
@ -77,7 +77,7 @@ ClassLoad(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thread, jclass klass) {
|
||||
|
||||
jvmti->RawMonitorEnter(agent_lock);
|
||||
|
||||
if (vm_started) {
|
||||
if (callbacksEnabled) {
|
||||
if (!NSK_JVMTI_VERIFY(jvmti_env->GetClassSignature(klass, &sig, &generic)))
|
||||
env->FatalError("failed to obtain a class signature\n");
|
||||
|
||||
@ -99,6 +99,13 @@ Breakpoint(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thr, jmethodID method,
|
||||
jclass klass;
|
||||
char *sig, *generic;
|
||||
|
||||
jvmti->RawMonitorEnter(agent_lock);
|
||||
|
||||
if (!callbacksEnabled) {
|
||||
jvmti->RawMonitorExit(agent_lock);
|
||||
return;
|
||||
}
|
||||
|
||||
NSK_DISPLAY0("Breakpoint event received\n");
|
||||
if (!NSK_JVMTI_VERIFY(jvmti_env->GetMethodDeclaringClass(method, &klass)))
|
||||
NSK_COMPLAIN0("TEST FAILURE: unable to get method declaring class\n\n");
|
||||
@ -118,6 +125,7 @@ Breakpoint(jvmtiEnv *jvmti_env, JNIEnv *env, jthread thr, jmethodID method,
|
||||
NSK_COMPLAIN1("TEST FAILURE: unexpected breakpoint event in method of class \"%s\"\n\n",
|
||||
sig);
|
||||
}
|
||||
jvmti->RawMonitorExit(agent_lock);
|
||||
}
|
||||
|
||||
void JNICALL
|
||||
@ -197,7 +205,16 @@ void JNICALL
|
||||
VMStart(jvmtiEnv *jvmti_env, JNIEnv* jni_env) {
|
||||
jvmti->RawMonitorEnter(agent_lock);
|
||||
|
||||
vm_started = 1;
|
||||
callbacksEnabled = NSK_TRUE;
|
||||
|
||||
jvmti->RawMonitorExit(agent_lock);
|
||||
}
|
||||
|
||||
void JNICALL
|
||||
VMDeath(jvmtiEnv *jvmti_env, JNIEnv* jni_env) {
|
||||
jvmti->RawMonitorEnter(agent_lock);
|
||||
|
||||
callbacksEnabled = NSK_FALSE;
|
||||
|
||||
jvmti->RawMonitorExit(agent_lock);
|
||||
}
|
||||
@ -261,12 +278,15 @@ jint Agent_Initialize(JavaVM *jvm, char *options, void *reserved) {
|
||||
callbacks.Breakpoint = &Breakpoint;
|
||||
callbacks.SingleStep = &SingleStep;
|
||||
callbacks.VMStart = &VMStart;
|
||||
callbacks.VMDeath = &VMDeath;
|
||||
if (!NSK_JVMTI_VERIFY(jvmti->SetEventCallbacks(&callbacks, sizeof(callbacks))))
|
||||
return JNI_ERR;
|
||||
|
||||
NSK_DISPLAY0("setting event callbacks done\nenabling JVMTI events ...\n");
|
||||
if (!NSK_JVMTI_VERIFY(jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_VM_START, NULL)))
|
||||
return JNI_ERR;
|
||||
if (!NSK_JVMTI_VERIFY(jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_VM_DEATH, NULL)))
|
||||
return JNI_ERR;
|
||||
if (!NSK_JVMTI_VERIFY(jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_CLASS_LOAD, NULL)))
|
||||
return JNI_ERR;
|
||||
if (!NSK_JVMTI_VERIFY(jvmti->SetEventNotificationMode(JVMTI_ENABLE, JVMTI_EVENT_BREAKPOINT, NULL)))
|
||||
|
Loading…
Reference in New Issue
Block a user