summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jni_compiler_test.cc12
-rw-r--r--test/MyClassNatives/MyClassNatives.java1
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);