Test arg passing for arraycopy.

Change-Id: Id0a6b6043b9604aa3bb077af0ed858be9bfa5407
diff --git a/src/jni_compiler_test.cc b/src/jni_compiler_test.cc
index 19f695d..87e6085 100644
--- a/src/jni_compiler_test.cc
+++ b/src/jni_compiler_test.cc
@@ -474,7 +474,7 @@
   return env->NewGlobalRef(x);
 }
 
-TEST_F(JniCompilerTest, DecodeJObject) {
+TEST_F(JniCompilerTest, ReturnGlobalRef) {
   SetupForTest(false, "fooO", "(Ljava/lang/Object;)Ljava/lang/Object;",
                reinterpret_cast<void*>(&Java_MyClass_fooO));
   jobject result = env_->CallNonvirtualObjectMethod(jobj_, jklass_, jmethod_, jobj_);
@@ -482,4 +482,20 @@
   EXPECT_TRUE(env_->IsSameObject(result, jobj_));
 }
 
+void my_arraycopy(JNIEnv* env, jclass klass, jobject src, jint src_pos, jobject dst, jint dst_pos, jint length) {
+  EXPECT_TRUE(env->IsSameObject(JniCompilerTest::jklass_, klass));
+  EXPECT_TRUE(env->IsSameObject(JniCompilerTest::jklass_, dst));
+  EXPECT_TRUE(env->IsSameObject(JniCompilerTest::jklass_, src));
+  EXPECT_TRUE(env->IsSameObject(JniCompilerTest::jklass_, src));
+  EXPECT_EQ(1234, src_pos);
+  EXPECT_EQ(5678, dst_pos);
+  EXPECT_EQ(9876, length);
+}
+
+TEST_F(JniCompilerTest, JavaLangSystemArrayCopy) {
+  SetupForTest(true, "arraycopy", "(Ljava/lang/Object;ILjava/lang/Object;II)V",
+               reinterpret_cast<void*>(&my_arraycopy));
+  env_->CallStaticVoidMethod(jklass_, jmethod_, jklass_, 1234, jklass_, 5678, 9876);
+}
+
 }  // namespace art
diff --git a/test/MyClassNatives/MyClassNatives.java b/test/MyClassNatives/MyClassNatives.java
index e296684..885747a1 100644
--- a/test/MyClassNatives/MyClassNatives.java
+++ b/test/MyClassNatives/MyClassNatives.java
@@ -12,4 +12,5 @@
     static native Object fooSIOO(int x, Object y, Object z);
     static native int fooSII(int x, int y);
     static synchronized native Object fooSSIOO(int x, Object y, Object z);
+    static native void arraycopy(Object src, int src_pos, Object dst, int dst_pos, int length);
 }