diff options
| -rw-r--r-- | src/jni_compiler_test.cc | 12 | ||||
| -rw-r--r-- | test/MyClassNatives/MyClassNatives.java | 1 |
2 files changed, 13 insertions, 0 deletions
diff --git a/src/jni_compiler_test.cc b/src/jni_compiler_test.cc index 254fbdf079..3ef970ef47 100644 --- a/src/jni_compiler_test.cc +++ b/src/jni_compiler_test.cc @@ -447,4 +447,16 @@ TEST_F(JniCompilerTest, NativeStackTraceElement) { EXPECT_EQ(55, result); } +jobject Java_MyClass_fooL(JNIEnv* env, jobject thisObj, jobject x) { + return env->NewGlobalRef(x); +} + +TEST_F(JniCompilerTest, DecodeJObject) { + SetupForTest(false, "fooL", "(Ljava/lang/Object;)Ljava/lang/Object;", + reinterpret_cast<void*>(&Java_MyClass_fooL)); + jobject result = env_->CallNonvirtualObjectMethod(jobj_, jklass_, jmethod_, jobj_); + EXPECT_EQ(JNILocalRefType, env_->GetObjectRefType(result)); + EXPECT_TRUE(env_->IsSameObject(result, jobj_)); +} + } // namespace art diff --git a/test/MyClassNatives/MyClassNatives.java b/test/MyClassNatives/MyClassNatives.java index 0716bfa63a..f8b81d478d 100644 --- a/test/MyClassNatives/MyClassNatives.java +++ b/test/MyClassNatives/MyClassNatives.java @@ -5,6 +5,7 @@ class MyClass { native void foo(); native int fooI(int x); native int fooII(int x, int y); + native Object fooL(Object x); native double fooDD(double x, double y); native Object fooIOO(int x, Object y, Object z); static native Object fooSIOO(int x, Object y, Object z); |