diff options
Diffstat (limited to 'test/common/stack_inspect.cc')
-rw-r--r-- | test/common/stack_inspect.cc | 54 |
1 files changed, 44 insertions, 10 deletions
diff --git a/test/common/stack_inspect.cc b/test/common/stack_inspect.cc index 922eae61e2..85ea1c8dd1 100644 --- a/test/common/stack_inspect.cc +++ b/test/common/stack_inspect.cc @@ -37,17 +37,20 @@ extern "C" JNIEXPORT void JNICALL Java_Main_disableStackFrameAsserts(JNIEnv* env asserts_enabled = false; } - -// public static native boolean isInterpreted(); - -extern "C" JNIEXPORT jboolean JNICALL Java_Main_isInterpreted(JNIEnv* env, jclass) { +static jboolean IsInterpreted(JNIEnv* env, jclass, size_t level) { ScopedObjectAccess soa(env); - NthCallerVisitor caller(soa.Self(), 1, false); + NthCallerVisitor caller(soa.Self(), level, false); caller.WalkStack(); CHECK(caller.caller != nullptr); return caller.GetCurrentShadowFrame() != nullptr ? JNI_TRUE : JNI_FALSE; } +// public static native boolean isInterpreted(); + +extern "C" JNIEXPORT jboolean JNICALL Java_Main_isInterpreted(JNIEnv* env, jclass klass) { + return IsInterpreted(env, klass, 1); +} + // public static native void assertIsInterpreted(); extern "C" JNIEXPORT void JNICALL Java_Main_assertIsInterpreted(JNIEnv* env, jclass klass) { @@ -56,10 +59,7 @@ extern "C" JNIEXPORT void JNICALL Java_Main_assertIsInterpreted(JNIEnv* env, jcl } } - -// public static native boolean isManaged(); - -extern "C" JNIEXPORT jboolean JNICALL Java_Main_isManaged(JNIEnv* env, jclass cls) { +static jboolean IsManaged(JNIEnv* env, jclass cls, size_t level) { ScopedObjectAccess soa(env); mirror::Class* klass = soa.Decode<mirror::Class*>(cls); @@ -71,13 +71,19 @@ extern "C" JNIEXPORT jboolean JNICALL Java_Main_isManaged(JNIEnv* env, jclass cl return JNI_FALSE; } - NthCallerVisitor caller(soa.Self(), 1, false); + NthCallerVisitor caller(soa.Self(), level, false); caller.WalkStack(); CHECK(caller.caller != nullptr); return caller.GetCurrentShadowFrame() != nullptr ? JNI_FALSE : JNI_TRUE; } +// public static native boolean isManaged(); + +extern "C" JNIEXPORT jboolean JNICALL Java_Main_isManaged(JNIEnv* env, jclass cls) { + return IsManaged(env, cls, 1); +} + // public static native void assertIsManaged(); extern "C" JNIEXPORT void JNICALL Java_Main_assertIsManaged(JNIEnv* env, jclass cls) { @@ -86,4 +92,32 @@ extern "C" JNIEXPORT void JNICALL Java_Main_assertIsManaged(JNIEnv* env, jclass } } +// public static native boolean isCallerInterpreted(); + +extern "C" JNIEXPORT jboolean JNICALL Java_Main_isCallerInterpreted(JNIEnv* env, jclass klass) { + return IsInterpreted(env, klass, 2); +} + +// public static native void assertCallerIsInterpreted(); + +extern "C" JNIEXPORT void JNICALL Java_Main_assertCallerIsInterpreted(JNIEnv* env, jclass klass) { + if (asserts_enabled) { + CHECK(Java_Main_isCallerInterpreted(env, klass)); + } +} + +// public static native boolean isCallerManaged(); + +extern "C" JNIEXPORT jboolean JNICALL Java_Main_isCallerManaged(JNIEnv* env, jclass cls) { + return IsManaged(env, cls, 2); +} + +// public static native void assertCallerIsManaged(); + +extern "C" JNIEXPORT void JNICALL Java_Main_assertCallerIsManaged(JNIEnv* env, jclass cls) { + if (asserts_enabled) { + CHECK(Java_Main_isCallerManaged(env, cls)); + } +} + } // namespace art |