diff options
Diffstat (limited to 'test/901-hello-ti-agent/basics.cc')
| -rw-r--r-- | test/901-hello-ti-agent/basics.cc | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/test/901-hello-ti-agent/basics.cc b/test/901-hello-ti-agent/basics.cc index 91662770be..20b227ab24 100644 --- a/test/901-hello-ti-agent/basics.cc +++ b/test/901-hello-ti-agent/basics.cc @@ -16,14 +16,17 @@ #include "901-hello-ti-agent/basics.h" +#include <thread> + #include <jni.h> #include <stdio.h> #include <string.h> -#include "base/macros.h" +#include "android-base/macros.h" #include "jvmti.h" -#include "ti-agent/common_helper.h" -#include "ti-agent/common_load.h" +// Test infrastructure +#include "jvmti_helper.h" +#include "test_env.h" namespace art { namespace Test901HelloTi { @@ -146,18 +149,32 @@ extern "C" JNIEXPORT void JNICALL Java_Main_setVerboseFlag( JNIEnv* env, jclass Main_klass ATTRIBUTE_UNUSED, jint iflag, jboolean val) { jvmtiVerboseFlag flag = static_cast<jvmtiVerboseFlag>(iflag); jvmtiError result = jvmti_env->SetVerboseFlag(flag, val); - JvmtiErrorToException(env, result); + JvmtiErrorToException(env, jvmti_env, result); } extern "C" JNIEXPORT jboolean JNICALL Java_Main_checkLivePhase( JNIEnv* env, jclass Main_klass ATTRIBUTE_UNUSED) { jvmtiPhase current_phase; jvmtiError phase_result = jvmti_env->GetPhase(¤t_phase); - if (JvmtiErrorToException(env, phase_result)) { + if (JvmtiErrorToException(env, jvmti_env, phase_result)) { return JNI_FALSE; } return (current_phase == JVMTI_PHASE_LIVE) ? JNI_TRUE : JNI_FALSE; } +static void CallJvmtiFunction(jvmtiEnv* env, jclass klass, jvmtiError* err) { + jint n; + jmethodID* methods = nullptr; + *err = env->GetClassMethods(klass, &n, &methods); +} + +extern "C" JNIEXPORT jboolean JNICALL Java_Main_checkUnattached( + JNIEnv* env ATTRIBUTE_UNUSED, jclass Main_klass) { + jvmtiError res = JVMTI_ERROR_NONE; + std::thread t1(CallJvmtiFunction, jvmti_env, Main_klass, &res); + t1.join(); + return res == JVMTI_ERROR_UNATTACHED_THREAD; +} + } // namespace Test901HelloTi } // namespace art |