Home | History | Annotate | Download | only in runtime

Lines Matching refs:env_

45     vm_->AttachCurrentThread(&env_, nullptr);
47 ScopedLocalRef<jclass> aioobe(env_,
48 env_->FindClass("java/lang/ArrayIndexOutOfBoundsException"));
50 aioobe_ = reinterpret_cast<jclass>(env_->NewGlobalRef(aioobe.get()));
52 ScopedLocalRef<jclass> ase(env_, env_->FindClass("java/lang/ArrayStoreException"));
54 ase_ = reinterpret_cast<jclass>(env_->NewGlobalRef(ase.get()));
56 ScopedLocalRef<jclass> sioobe(env_,
57 env_->FindClass("java/lang/StringIndexOutOfBoundsException"));
59 sioobe_ = reinterpret_cast<jclass>(env_->NewGlobalRef(sioobe.get()));
63 ScopedObjectAccess soa(env_);
64 EXPECT_TRUE(env_->ExceptionCheck())
66 jthrowable exception = env_->ExceptionOccurred();
68 env_->ExceptionClear();
69 EXPECT_TRUE(env_->IsInstanceOf(exception, exception_class));
74 env_->DeleteGlobalRef(aioobe_);
78 env_->DeleteGlobalRef(ase_);
82 env_->DeleteGlobalRef(sioobe_);
93 ScopedObjectAccess soa(env_);
100 EXPECT_NE(env_->FindClass(name), nullptr) << name;
101 EXPECT_FALSE(env_->ExceptionCheck()) << name;
106 EXPECT_EQ(env_->FindClass(name), nullptr) << name;
108 EXPECT_TRUE(env_->ExceptionCheck()) << name;
109 env_->ExceptionClear();
120 env_->FindClass(nullptr);
138 EXPECT_EQ(env_->FindClass("java.lang.String"), nullptr);
139 EXPECT_FALSE(env_->ExceptionCheck());
142 EXPECT_EQ(env_->FindClass("[Ljava.lang.String;"), nullptr);
143 EXPECT_FALSE(env_->ExceptionCheck());
176 jclass c = env_->FindClass("java/lang/String");
179 jfieldID fid = env_->GetFieldID(nullptr, "count", "I");
183 fid = env_->GetFieldID(c, nullptr, "I");
187 fid = env_->GetFieldID(c, "count", nullptr);
199 jclass c = env_->FindClass("java/lang/String");
202 jfieldID fid = env_->GetStaticFieldID(nullptr, "CASE_INSENSITIVE_ORDER", "Ljava/util/Comparator;");
206 fid = env_->GetStaticFieldID(c, nullptr, "Ljava/util/Comparator;");
210 fid = env_->GetStaticFieldID(c, "CASE_INSENSITIVE_ORDER", nullptr);
222 jmethodID method = env_->GetMethodID(nullptr, "<init>", "(Ljava/lang/String;)V");
226 jclass jlnsme = env_->FindClass("java/lang/NoSuchMethodError");
228 method = env_->GetMethodID(jlnsme, nullptr, "(Ljava/lang/String;)V");
232 method = env_->GetMethodID(jlnsme, "<init>", nullptr);
244 jmethodID method = env_->GetStaticMethodID(nullptr, "valueOf", "(I)Ljava/lang/String;");
248 jclass jlstring = env_->FindClass("java/lang/String");
249 method = env_->GetStaticMethodID(jlstring, nullptr, "(I)Ljava/lang/String;");
253 method = env_->GetStaticMethodID(jlstring, "valueOf", nullptr);
265 jclass c = env_->FindClass("java/lang/String");
267 jfieldID fid = env_->GetFieldID(c, "count", "I");
271 jobject field = env_->ToReflectedField(nullptr, fid, JNI_FALSE);
279 field = env_->ToReflectedField(c, nullptr, JNI_FALSE);
284 fid = env_->FromReflectedField(nullptr);
296 jclass c = env_->FindClass("java/lang/String");
298 jmethodID mid = env_->GetMethodID(c, "<init>", "()V");
302 jobject method = env_->ToReflectedMethod(nullptr, mid, JNI_FALSE);
310 method = env_->ToReflectedMethod(c, nullptr, JNI_FALSE);
314 mid = env_->FromReflectedMethod(method);
327 EXPECT_EQ(env_->RegisterNatives(nullptr, methods, 0), JNI_ERR);
333 jclass jlobject = env_->FindClass("java/lang/Object");
334 EXPECT_EQ(env_->RegisterNatives(jlobject, nullptr, 1), JNI_ERR);
338 EXPECT_EQ(env_->UnregisterNatives(nullptr), JNI_ERR);
350 jbooleanArray array = env_->NewBooleanArray(10);
352 EXPECT_EQ(env_->GetByteArrayElements(reinterpret_cast<jbyteArray>(array), &is_copy), nullptr);
356 EXPECT_EQ(env_->GetShortArrayElements(reinterpret_cast<jshortArray>(array), &is_copy), nullptr);
360 EXPECT_EQ(env_->GetCharArrayElements(reinterpret_cast<jcharArray>(array), &is_copy), nullptr);
364 EXPECT_EQ(env_->GetIntArrayElements(reinterpret_cast<jintArray>(array), &is_copy), nullptr);
368 EXPECT_EQ(env_->GetLongArrayElements(reinterpret_cast<jlongArray>(array), &is_copy), nullptr);
372 EXPECT_EQ(env_->GetFloatArrayElements(reinterpret_cast<jfloatArray>(array), &is_copy), nullptr);
376 EXPECT_EQ(env_->GetDoubleArrayElements(reinterpret_cast<jdoubleArray>(array), &is_copy), nullptr);
380 jbyteArray array2 = env_
381 EXPECT_EQ(env_->GetBooleanArrayElements(reinterpret_cast<jbooleanArray>(array2), &is_copy),
386 jobject object = env_->NewStringUTF("Test String");
387 EXPECT_EQ(env_->GetBooleanArrayElements(reinterpret_cast<jbooleanArray>(object), &is_copy),
400 jbooleanArray array = env_->NewBooleanArray(10);
403 jboolean* elements = env_->GetBooleanArrayElements(array, &is_copy);
405 env_->ReleaseByteArrayElements(reinterpret_cast<jbyteArray>(array),
410 env_->ReleaseShortArrayElements(reinterpret_cast<jshortArray>(array),
415 env_->ReleaseCharArrayElements(reinterpret_cast<jcharArray>(array),
420 env_->ReleaseIntArrayElements(reinterpret_cast<jintArray>(array),
425 env_->ReleaseLongArrayElements(reinterpret_cast<jlongArray>(array),
430 env_->ReleaseFloatArrayElements(reinterpret_cast<jfloatArray>(array),
435 env_->ReleaseDoubleArrayElements(reinterpret_cast<jdoubleArray>(array),
442 env_->ReleaseBooleanArrayElements(array, elements, 0);
445 jbyteArray array = env_->NewByteArray(10);
447 jbyte* elements = env_->GetByteArrayElements(array, &is_copy);
449 env_->ReleaseBooleanArrayElements(reinterpret_cast<jbooleanArray>(array),
454 jobject object = env_->NewStringUTF("Test String");
455 env_->ReleaseBooleanArrayElements(reinterpret_cast<jbooleanArray>(object),
463 env_->ReleaseByteArrayElements(array, elements, 0);
472 jobject object = env_->NewStringUTF("Test String");
474 void* elements = env_->GetPrimitiveArrayCritical(reinterpret_cast<jarray>(object), &is_copy);
477 env_->ReleasePrimitiveArrayCritical(reinterpret_cast<jarray>(object), elements, 0);
488 jbooleanArray array = env_->NewBooleanArray(kLength);
491 env_->GetByteArrayRegion(reinterpret_cast<jbyteArray>(array), 0, kLength,
496 env_->GetShortArrayRegion(reinterpret_cast<jshortArray>(array), 0, kLength,
501 env_->GetCharArrayRegion(reinterpret_cast<jcharArray>(array), 0, kLength,
506 env_->GetIntArrayRegion(reinterpret_cast<jintArray>(array), 0, kLength,
511 env_->GetLongArrayRegion(reinterpret_cast<jlongArray>(array), 0, kLength,
516 env_->GetFloatArrayRegion(reinterpret_cast<jfloatArray>(array), 0, kLength,
521 env_->GetDoubleArrayRegion(reinterpret_cast<jdoubleArray>(array), 0, kLength,
526 jbyteArray array2 = env_->NewByteArray(10);
527 env_->GetBooleanArrayRegion(reinterpret_cast<jbooleanArray>(array2), 0, kLength,
532 jobject object = env_->NewStringUTF("Test String");
533 env_->GetBooleanArrayRegion(reinterpret_cast<jbooleanArray>(object), 0, kLength,
546 jbooleanArray array = env_->NewBooleanArray(kLength);
549 env_->SetByteArrayRegion(reinterpret_cast<jbyteArray>(array), 0, kLength,
554 env_->SetShortArrayRegion(reinterpret_cast<jshortArray>(array), 0, kLength,
559 env_->SetCharArrayRegion(reinterpret_cast<jcharArray>(array), 0, kLength,
564 env_->SetIntArrayRegion(reinterpret_cast<jintArray>(array), 0, kLength,
569 env_->SetLongArrayRegion(reinterpret_cast<jlongArray>(array), 0, kLength,
574 env_->SetFloatArrayRegion(reinterpret_cast<jfloatArray>(array), 0, kLength,
579 env_->SetDoubleArrayRegion(reinterpret_cast<jdoubleArray>(array), 0, kLength,
584 jbyteArray array2 = env_->NewByteArray(10);
585 env_->SetBooleanArrayRegion(reinterpret_cast<jbooleanArray>(array2), 0, kLength,
590 jobject object = env_->NewStringUTF("Test String");
591 env_->SetBooleanArrayRegion(reinterpret_cast<jbooleanArray>(object), 0, kLength,
603 jclass element_class = env_->FindClass("java/lang/String");
606 env_->NewObjectArray(-1, element_class, nullptr);
609 env_->NewObjectArray(std::numeric_limits<jint>::min(), element_class, nullptr);
640 env_ = Thread::Current()->GetJniEnv();
641 jklass_ = env_->FindClass("MyClassNatives");
645 jmethod_ = env_->GetStaticMethodID(jklass_, method_name, method_sig);
647 jmethod_ = env_->GetMethodID(jklass_, method_name, method_sig);
653 ASSERT_EQ(JNI_OK, env_->RegisterNatives(jklass_, methods, 1))
656 env_->UnregisterNatives(jklass_);
659 jmethodID constructor = env_->GetMethodID(jklass_, "<init>", "()V");
660 jobj_ = env_->NewObject(jklass_, constructor);
665 JNIEnv* env_;
677 jclass c = env_
679 jobject o = env_->AllocObject(c);
683 ASSERT_TRUE(env_->IsInstanceOf(o, c));
687 ASSERT_EQ(0, env_->GetIntField(o, env_->GetFieldID(c, "count", "I")));
691 ASSERT_EQ(JNI_VERSION_1_6, env_->GetVersion());
703 jclass jlnsfe = env_->FindClass("java/lang/NoSuchFieldError");
705 jclass c = env_->FindClass("java/lang/String");
709 jfieldID fid = env_->GetFieldID(c, "count", "J");
714 fid = env_->GetFieldID(c, "count", "Lrod/jane/freddy;");
719 fid = env_->GetFieldID(c, "Count", "I");
724 fid = env_->GetFieldID(c, "count", "I");
726 EXPECT_FALSE(env_->ExceptionCheck());
729 c = env_->FindClass("java/lang/StringBuilder");
730 fid = env_->GetFieldID(c, "count", "I");
733 EXPECT_FALSE(env_->ExceptionCheck());
736 fid = env_->GetFieldID(c, "CASE_INSENSITIVE_ORDER", "Ljava/util/Comparator;");
746 jclass jlnsfe = env_->FindClass("java/lang/NoSuchFieldError");
748 jclass c = env_->FindClass("java/lang/String");
752 jfieldID fid = env_->GetStaticFieldID(c, "CASE_INSENSITIVE_ORDER", "J");
757 fid = env_->GetStaticFieldID(c, "CASE_INSENSITIVE_ORDER", "Lrod/jane/freddy;");
762 fid = env_->GetStaticFieldID(c, "cASE_INSENSITIVE_ORDER", "Ljava/util/Comparator;");
767 fid = env_->GetStaticFieldID(c, "CASE_INSENSITIVE_ORDER", "Ljava/util/Comparator;");
770 EXPECT_FALSE(env_->ExceptionCheck());
773 fid = env_->GetStaticFieldID(c, "count", "I");
783 jclass jlobject = env_->FindClass("java/lang/Object");
784 jclass jlstring = env_->FindClass("java/lang/String");
785 jclass jlnsme = env_->FindClass("java/lang/NoSuchMethodError");
786 jclass jncrbc = env_->FindClass("java/nio/channels/ReadableByteChannel");
789 ASSERT_FALSE(env_->ExceptionCheck());
793 jmethodID method = env_->GetMethodID(jlobject, "foo", "()V");
798 method = env_->GetMethodID(jlobject, "equals", "(Ljava/lang/Object;)Z");
800 EXPECT_FALSE(env_->ExceptionCheck());
804 method = env_->GetMethodID(jlstring, "valueOf", "(I)Ljava/lang/String;");
809 method = env_->GetMethodID(jlnsme, "<init>", "(Ljava/lang/String;)V");
811 EXPECT_FALSE(env_->ExceptionCheck());
814 method = env_->GetMethodID(jncrbc, "close", "()V");
816 EXPECT_FALSE(env_->ExceptionCheck());
824 jclass jlobject = env_->FindClass("java/lang/Object");
828 method = env_->GetMethodID(jlobject, "<init>", "()V");
830 EXPECT_FALSE(env_->ExceptionCheck());
834 env_->CallVoidMethod(nullptr, method);
845 jclass prim_class = env_->FindClass("java/lang/" #boxed_type); \
846 jmethodID method = env_->GetStaticMethodID(prim_class, "valueOf", \
849 EXPECT_FALSE(env_->ExceptionCheck()); \
851 env_->CallStaticObjectMethod(prim_class, method, bad_value); \
872 jclass prim_class = env_->FindClass("java/lang/" #boxed_type); \
873 jmethodID method = env_->GetStaticMethodID(prim_class, "valueOf", \
876 EXPECT_FALSE(env_->ExceptionCheck()); \
880 env_->CallStaticObjectMethodA(prim_class, method, &jval); \
885 jclass prim_class = env_->FindClass("java/lang/" #boxed_type); \
886 jmethodID method = env_->GetStaticMethodID(prim_class, "valueOf", \
889 EXPECT_FALSE(env_->ExceptionCheck()); \
892 env_->CallStaticObjectMethodA(prim_class, method, &jval); \
906 jclass jlobject = env_->FindClass("java/lang/Object");
907 jclass jlnsme = env_->FindClass("java/lang/NoSuchMethodError");
910 ASSERT_FALSE(env_->ExceptionCheck());
914 jmethodID method = env_->GetStaticMethodID(jlobject, "foo", "()V");
920 method = env_->GetStaticMethodID(jlobject, "equals", "(Ljava/lang/Object;)Z");
925 jclass jlstring = env_->FindClass("java/lang/String");
926 method = env_->GetStaticMethodID(jlstring, "valueOf", "(I)Ljava/lang/String;");
928 EXPECT_FALSE(env_->ExceptionCheck());
941 jclass jlrField = env_->FindClass("java/lang/reflect/Field");
942 jclass c = env_->FindClass("java/lang/String");
944 jfieldID fid = env_->GetFieldID(c, "count", "I");
947 jobject field = env_->ToReflectedField(c, fid, JNI_FALSE);
948 size_t capacity_before = GetLocalsCapacity(env_);
952 env_->DeleteLocalRef(env_->ToReflectedField(c, fid, JNI_FALSE));
954 size_t capacity_after = GetLocalsCapacity(env_);
958 ASSERT_TRUE(env_->IsInstanceOf(field, jlrField));
960 jfieldID fid2 = env_->FromReflectedField(field);
963 jstring s = env_->NewStringUTF("poop");
966 env_->GetIntField(s, fid2));
968 jstring s_16 = env_->NewStringUTF("\u0444\u0444");
970 env_->GetIntField(s_16, fid2));
972 ASSERT_EQ(4, env_->GetIntField(s, fid2));
980 jclass jlrMethod = env_->FindClass("java/lang/reflect/Method");
982 jclass jlrConstructor = env_->FindClass("java/lang/reflect/Constructor");
984 jclass c = env_->FindClass("java/lang/String");
987 jmethodID mid = env_->GetMethodID(c, "<init>", "()V");
990 jobject method = env_->ToReflectedMethod(c, mid, JNI_FALSE);
991 size_t capacity_before = GetLocalsCapacity(env_);
995 env_->DeleteLocalRef(env_->ToReflectedMethod(c, mid, JNI_FALSE));
997 size_t capacity_after = GetLocalsCapacity(env_);
1000 ASSERT_TRUE(env_->IsInstanceOf(method, jlrConstructor));
1002 jmethodID mid2 = env_->FromReflectedMethod(method);
1005 jstring s = reinterpret_cast<jstring>(env_->AllocObject(c));
1007 env_->CallVoidMethod(s, mid2);
1008 ASSERT_EQ(JNI_FALSE, env_->ExceptionCheck());
1009 env_->ExceptionClear();
1011 mid = env_->GetMethodID(c, "length", "()I");
1014 method = env_->ToReflectedMethod(c, mid, JNI_FALSE);
1016 ASSERT_TRUE(env_->IsInstanceOf(method, jlrMethod));
1018 mid2 = env_->FromReflectedMethod(method);
1021 s = env_->NewStringUTF("poop");
1023 ASSERT_EQ(4, env_->CallIntMethod(s, mid2));
1035 jclass jlobject = env_->FindClass("java/lang/Object");
1036 jclass jlnsme = env_->FindClass("java/lang/NoSuchMethodError");
1040 ASSERT_FALSE(env_->ExceptionCheck());
1048 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 1), JNI_ERR);
1055 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 1), JNI_ERR);
1062 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 1), JNI_ERR);
1069 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 1), JNI_ERR);
1076 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 1), JNI_ERR);
1084 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 1), JNI_OK);
1086 EXPECT_FALSE(env_->ExceptionCheck());
1087 EXPECT_EQ(env_->UnregisterNatives(jlobject), JNI_OK);
1092 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, 0), JNI_OK);
1094 EXPECT_FALSE(env_->ExceptionCheck());
1095 EXPECT_EQ(env_->UnregisterNatives(jlobject), JNI_OK);
1101 EXPECT_EQ(env_->RegisterNatives(jlobject, methods, i), JNI_ERR);
1104 EXPECT_FALSE(env_->ExceptionCheck());
1107 EXPECT_EQ(env_->UnregisterNatives(jlnsme), JNI_OK);
1124 down_cast<JNIEnvExt*>(env_)->SetCheckJniEnabled(false); \
1126 EXPECT_EQ(env_->new_fn(-1), nullptr); \
1128 EXPECT_EQ(env_->new_fn(std::numeric_limits<jint>::min()), nullptr); \
1131 EXPECT_EQ(0, env_->GetArrayLength(nullptr)); \
1133 env_->get_region_fn(nullptr, 0, 0, nullptr); \
1135 env_->set_region_fn(nullptr, 0, 0, nullptr); \
1137 env_->get_elements_fn(nullptr, nullptr); \
1139 env_->release_elements_fn(nullptr, nullptr, 0); \
1142 scalar_type ## Array a = env_->new_fn(size); \
1143 env_->get_region_fn(a, 0, size, nullptr); \
1145 env_->set_region_fn(a, 0, size, nullptr); \
1147 down_cast<JNIEnvExt*>(env_)->SetCheckJniEnabled(true); \
1150 scalar_type ## Array a = env_->new_fn(size); \
1152 EXPECT_TRUE(env_->IsInstanceOf(a, env_->FindClass(expected_class_descriptor))); \
1153 EXPECT_EQ(size, env_->GetArrayLength(a)); \
1157 env_->get_region_fn(a, -1, 1, nullptr); \
1159 env_->set_region_fn(a, -1, 1, nullptr); \
1163 env_->get_region_fn(a, 0, -1, nullptr); \
1165 env_->set_region_fn(a, 0, -1, nullptr); \
1169 env_->get_region_fn(a, size - 1, size, nullptr); \
1171 env_->set_region_fn(a, size - 1, size, nullptr); \
1175 env_->get_region_fn(a, 0x7fffffff, 0x7fffffff, nullptr); \
1177 env_->set_region_fn(a, 0x7fffffff, 0x7fffffff, nullptr); \
1181 env_->get_region_fn(a, 2, 0, nullptr); \
1183 env_->get_region_fn(a, 123, 0, nullptr); \
1187 env_->set_region_fn(a, 2, 0, nullptr); \
1189 env_->set_region_fn(a, 123, 0, nullptr); \
1200 env_->set_region_fn(a, 0, size, &src_buf[0]); \
1202 env_->get_region_fn(a, 1, size - 2, &dst_buf[1]); \
1206 env_->get_region_fn(a, 0, 1, &dst_buf[0]); \
1207 env_->get_region_fn(a, size - 1, 1, &dst_buf[size - 1]); \
1211 env_->get_region_fn(a, 0, size, &dst_buf[0]); \
1215 void* v = env_->GetPrimitiveArrayCritical(a, nullptr); \
1218 env_->ReleasePrimitiveArrayCritical(a, v, 0); \
1220 scalar_type* xs = env_->get_elements_fn(a, nullptr); /* NOLINT, scalar_type */ \
1223 env_->release_elements_fn(a, xs, 0); \
1284 jclass element_class = env_->FindClass("java/lang/String");
1286 jclass array_class = env_->FindClass("[Ljava/lang/String;");
1289 jobjectArray a = env_->NewObjectArray(0, element_class, nullptr);
1291 EXPECT_TRUE(env_->IsInstanceOf(a, array_class));
1292 EXPECT_EQ(0, env_->GetArrayLength(a));
1294 a = env_->NewObjectArray(1, element_class, nullptr);
1296 EXPECT_TRUE(env_->IsInstanceOf(a, array_class));
1297 EXPECT_EQ(1, env_->GetArrayLength(a));
1298 EXPECT_TRUE(env_->IsSameObject(env_->GetObjectArrayElement(a, 0), nullptr));
1315 env_->NewObjectArray(0, nullptr, nullptr);
1318 env_->NewObjectArray(1, primitive_class, nullptr);
1324 env_->NewObjectArray(0, nullptr, nullptr);
1327 env_->NewObjectArray(1, primitive_class, nullptr);
1335 jclass element_class = env_->FindClass("java/lang/String");
1337 jclass array_class = env_->FindClass("[Ljava/lang/String;");
1340 jstring s = env_->NewStringUTF("poop");
1341 jobjectArray a = env_->NewObjectArray(2, element_class, s);
1343 EXPECT_TRUE(env_->IsInstanceOf(a, array_class));
1344 EXPECT_EQ(2, env_->GetArrayLength(a));
1345 EXPECT_TRUE(env_->IsSameObject(env_->GetObjectArrayElement(a, 0), s));
1346 EXPECT_TRUE(env_->IsSameObject(env_->GetObjectArrayElement(a, 1), s));
1350 env_->NewObjectArray(2, element_class, a);
1359 EXPECT_EQ(0, env_->GetArrayLength(nullptr));
1362 EXPECT_EQ(JNI_ERR, env_->GetArrayLength(nullptr));
1368 jclass string_class = env_->FindClass("java/lang/String");
1370 jclass class_class = env_->FindClass("java/lang/Class");
1373 jstring s = env_->NewStringUTF("poop");
1374 jclass c = env_->GetObjectClass(s);
1375 ASSERT_TRUE(env_->IsSameObject(string_class, c));
1377 jclass c2 = env_->GetObjectClass(c);
1378 ASSERT_TRUE(env_->IsSameObject(class_class, env_->GetObjectClass(c2)));
1382 EXPECT_EQ(env_->GetObjectClass(nullptr), nullptr);
1387 jclass object_class = env_->FindClass("java/lang/Object");
1389 jclass string_class = env_->FindClass("java/lang/String");
1391 jclass runnable_interface = env_->FindClass("java/lang/Runnable");
1393 ASSERT_TRUE(env_->IsSameObject(object_class, env_->GetSuperclass(string_class)));
1394 ASSERT_EQ(env_->GetSuperclass(object_class), nullptr);
1395 ASSERT_EQ(env_->GetSuperclass(runnable_interface), nullptr);
1400 EXPECT_EQ(env_->GetSuperclass(nullptr), nullptr);
1403 EXPECT_EQ(env_->GetSuperclass(nullptr), nullptr);
1409 jclass object_class = env_->FindClass("java/lang/Object");
1411 jclass string_class = env_->FindClass("java/lang/String");
1416 ASSERT_TRUE(env_->IsAssignableFrom(string_class, object_class));
1417 ASSERT_FALSE(env_->IsAssignableFrom(object_class, string_class));
1419 jclass charsequence_interface = env_->FindClass("java/lang/CharSequence");
1424 ASSERT_TRUE(env_->IsAssignableFrom(string_class, charsequence_interface));
1425 ASSERT_FALSE(env_->IsAssignableFrom(charsequence_interface, string_class));
1428 jclass string_array_class = env_->FindClass("[Ljava/lang/String;");
1430 jclass object_array_class = env_->FindClass("[Ljava/lang/Object;");
1432 ASSERT_TRUE(env_->IsAssignableFrom(string_array_class, object_array_class));
1433 ASSERT_FALSE(env_->IsAssignableFrom(object_array_class, string_array_class));
1440 EXPECT_EQ(env_->IsAssignableFrom(nullptr, string_class), JNI_FALSE);
1442 EXPECT_EQ(env_->IsAssignableFrom(object_class, nullptr), JNI_FALSE);
1445 EXPECT_EQ(env_->IsAssignableFrom(nullptr, string_class), JNI_FALSE);
1447 EXPECT_EQ(env_->IsAssignableFrom(object_class, nullptr), JNI_FALSE);
1453 jclass local = env_->FindClass("java/lang/Object");
1455 EXPECT_EQ(JNILocalRefType, env_->GetObjectRefType(local));
1457 jobject global = env_->NewGlobalRef(local);
1458 EXPECT_EQ(JNIGlobalRefType, env_->GetObjectRefType(global));
1460 jweak weak_global = env_->NewWeakGlobalRef(local);
1461 EXPECT_EQ(JNIWeakGlobalRefType, env_->GetObjectRefType(weak_global));
1466 EXPECT_EQ(JNIInvalidRefType, env_->GetObjectRefType(invalid));
1473 env_->GetObjectRefType(nullptr));
1480 jclass java_lang_Class = env_->FindClass("java/lang/Class");
1482 jobjectArray local_ref = env_->NewObjectArray(1, java_lang_Class, nullptr);
1484 jweak weak_global = env_->NewWeakGlobalRef(local_ref);
1486 env_->DeleteLocalRef(local_ref);
1489 jobject new_global_ref = env_->NewGlobalRef(weak_global);
1491 jobject new_local_ref = env_->NewLocalRef(weak_global);
1496 EXPECT_EQ(env_->NewStringUTF(nullptr), nullptr);
1499 s = env_->NewStringUTF("");
1501 EXPECT_EQ(0, env_->GetStringLength(s));
1502 EXPECT_EQ(0, env_->GetStringUTFLength(s));
1503 s = env_->NewStringUTF("hello");
1505 EXPECT_EQ(5, env_->GetStringLength(s));
1506 EXPECT_EQ(5, env_->GetStringUTFLength(s));
1509 s = env_->NewStringUTF("\xed\xa0\x81\xed\xb0\x80");
1511 EXPECT_EQ(2, env_->GetStringLength(s));
1514 EXPECT_EQ(4, env_->GetStringUTFLength(s));
1515 const char* chars = env_->GetStringUTFChars(s, nullptr);
1517 env_->ReleaseStringUTFChars(s, chars);
1520 const jchar* jchars = env_->GetStringChars(s, nullptr);
1523 env_->ReleaseStringChars(s, jchars);
1526 s = env_->NewStringUTF("\xed\xa0\x81\xed\xb0\x80 \xf0\x9f\x8f\xa0");
1531 EXPECT_EQ(5, env_->GetStringLength(s));
1532 jchars = env_->GetStringChars(s, nullptr);
1539 env_->ReleaseStringChars(s, jchars);
1541 EXPECT_EQ(9, env_->GetStringUTFLength(s));
1542 chars = env_->GetStringUTFChars(s, nullptr);
1544 env_->ReleaseStringUTFChars(s, chars);
1548 s = env_->NewStringUTF("\x24 \xc2\xa2 \xe2\x82\xac \xf0\x9f\x8f\xa0");
1550 EXPECT_EQ(8, env_->GetStringLength(s));
1551 EXPECT_EQ(13, env_->GetStringUTFLength(s));
1557 s = env_->NewString(chars, 0);
1559 EXPECT_EQ(0, env_->GetStringLength(s));
1560 EXPECT_EQ(0, env_->GetStringUTFLength(s));
1561 s = env_->NewString(chars, 2);
1563 EXPECT_EQ(2, env_->GetStringLength(s));
1564 EXPECT_EQ(2, env_->GetStringUTFLength(s));
1570 jstring s = env_->NewString(nullptr, 0);
1572 EXPECT_EQ(0, env_->GetStringLength(s));
1577 env_->NewString(nullptr, 1);
1584 env_->NewString(nullptr, -1);
1586 env_->NewString(nullptr, std::numeric_limits<jint>::min());
1589 env_->NewString(nullptr, -1);
1591 env_->NewString(nullptr, std::numeric_limits<jint>::min());
1601 jstring s = env_->NewStringUTF("hello");
1604 env_->GetStringRegion(s, -1, 0, nullptr);
1606 env_->GetStringRegion(s, 0, -1, nullptr);
1608 env_->GetStringRegion(s, 0, 10, nullptr);
1610 env_->GetStringRegion(s, 10, 1, nullptr);
1613 env_->GetStringRegion(s, 0x7fffffff, 0x7fffffff, nullptr);
1617 env_->GetStringRegion(s, 1, 2, &chars[1]);
1624 env_->GetStringRegion(s, 2, 0, nullptr);
1626 env_->GetStringRegion(s, 123, 0, nullptr);
1629 env_->GetStringUTFRegion(s, -1, 0, nullptr);
1631 env_->GetStringUTFRegion(s, 0, -1, nullptr);
1633 env_->GetStringUTFRegion(s, 0, 10, nullptr);
1635 env_->GetStringUTFRegion(s, 10, 1, nullptr);
1638 env_->GetStringUTFRegion(s, 0x7fffffff, 0x7fffffff, nullptr);
1642 env_->GetStringUTFRegion(s, 1, 2, &bytes[1]);
1649 env_->GetStringUTFRegion(s, 2, 0, nullptr);
1651 env_->GetStringUTFRegion(s, 123, 0, nullptr);
1660 EXPECT_EQ(env_->GetStringUTFChars(nullptr, nullptr), nullptr);
1665 EXPECT_EQ(env_->GetStringUTFChars(nullptr, nullptr), nullptr);
1670 jstring s = env_->NewStringUTF("hello");
1673 const char* utf = env_->GetStringUTFChars(s, nullptr);
1675 env_->ReleaseStringUTFChars(s, utf);
1678 utf = env_->GetStringUTFChars(s, &is_copy);
1681 env_->ReleaseStringUTFChars(s, utf);
1685 jstring s = env_->NewStringUTF("hello");
1686 ScopedObjectAccess soa(env_);
1691 const jchar* chars = env_->GetStringChars(s, nullptr);
1697 env_->ReleaseStringChars(s, chars);
1700 chars = env_->GetStringChars(s, &is_copy);
1711 env_->ReleaseStringChars(s, chars);
1715 jstring s = env_->NewStringUTF("hello");
1719 const jchar* chars = env_->GetStringCritical(s, nullptr);
1725 env_->ReleaseStringCritical(s, chars);
1728 chars = env_->GetStringCritical(s, &is_copy);
1740 env_->ReleaseStringCritical(s, chars);
1745 jstring s_16 = env_->NewStringUTF("\xed\xa0\x81\xed\xb0\x80");
1746 chars = env_->GetStringCritical(s_16, &is_copy_16);
1747 EXPECT_EQ(2, env_->GetStringLength(s_16));
1748 EXPECT_EQ(4, env_->GetStringUTFLength(s_16));
1749 env_->ReleaseStringCritical(s_16, chars);
1754 jclass java_lang_Class = env_->FindClass("java/lang/Class");
1757 jobjectArray array = env_->NewObjectArray(1, java_lang_Class, nullptr);
1759 EXPECT_EQ(env_->GetObjectArrayElement(array, 0), nullptr);
1760 env_->SetObjectArrayElement(array, 0, java_lang_Class);
1761 EXPECT_TRUE(env_->IsSameObject(env_->GetObjectArrayElement(array, 0), java_lang_Class));
1764 env_->SetObjectArrayElement(array, -1, java_lang_Class);
1768 env_->SetObjectArrayElement(array, 1, java_lang_Class);
1772 env_->SetObjectArrayElement(array, 0, env_->NewStringUTF("not a jclass!"));
1778 EXPECT_EQ(nullptr, env_->GetObjectArrayElement(nullptr, 0));
1780 env_->SetObjectArrayElement(nullptr, 0, nullptr);
1783 EXPECT_EQ(nullptr, env_->GetObjectArrayElement(nullptr, 0));
1785 env_->SetObjectArrayElement(nullptr, 0, nullptr);
1792 jfieldID fid = env_->GetStaticFieldID(c, field_name, sig); \
1794 env_->SetStatic ## type ## Field(c, fid, value1); \
1795 expect_eq(value1, env_->GetStatic ## type ## Field(c, fid)); \
1796 env_->SetStatic ## type ## Field(c, fid, value2); \
1797 expect_eq(value2, env_->GetStatic ## type ## Field(c, fid)); \
1802 env_->GetStatic ## type ## Field(nullptr, fid); \
1803 env_->SetStatic ## type ## Field(nullptr, fid, value1); \
1806 env_->GetStatic ## type ## Field(c, nullptr); \
1808 env_->SetStatic ## type ## Field(c, nullptr, value1); \
1812 env_->GetStatic ## type ## Field(nullptr, fid); \
1814 env_->SetStatic ## type ## Field(nullptr, fid, value1); \
1816 env_->GetStatic ## type ## Field(c, nullptr); \
1818 env_->SetStatic ## type ## Field(c, nullptr, value1); \
1825 jfieldID fid = env_->GetFieldID(c, field_name, sig); \
1827 env_->Set ## type ## Field(instance, fid, value1); \
1828 expect_eq(value1, env_->Get ## type ## Field(instance, fid)); \
1829 env_->Set ## type ## Field(instance, fid, value2); \
1830 expect_eq(value2, env_->Get ## type ## Field(instance, fid)); \
1834 env_->Get ## type ## Field(nullptr, fid); \
1836 env_->Set ## type ## Field(nullptr, fid, value1); \
1838 env_->Get ## type ## Field(instance, nullptr); \
1840 env_->Set ## type ## Field(instance, nullptr, value1); \
1843 env_->Get ## type ## Field(nullptr, fid); \
1845 env_->Set ## type ## Field(nullptr, fid, value1); \
1847 env_->Get ## type ## Field(instance, nullptr); \
1849 env_->Set ## type ## Field(instance, nullptr, value1); \
1860 jclass c = env_->FindClass(cname); \
1862 jobject o = env_->AllocObject(c); \
1894 jfieldID fid = env_->GetStaticFieldID(c, field_name, sig); \
1897 env_->Get ## type ## Field(uc, fid); \
1899 env_->Set ## type ## Field(uc, fid, value1); \
1908 jclass c = env_->FindClass("AllFields");
1910 jclass uc = env_->FindClass("AllFieldsUnrelated");
1931 jclass c = env_->FindClass(cname); \
1933 jobject o = env_->AllocObject(c); \
1936 jstring s1 = env_->NewStringUTF("hello"); \
1938 jstring s2 = env_->NewStringUTF("world"); \
1941 jfieldID s_fid = env_->GetStaticFieldID(c, "sObject", "Ljava/lang/Object;"); \
1943 jfieldID i_fid = env_->GetFieldID(c, "iObject", "Ljava/lang/Object;"); \
1946 env_->SetStaticObjectField(c, s_fid, s1); \
1947 ASSERT_TRUE(env_->IsSameObject(s1, env_->GetStaticObjectField(c, s_fid))); \
1948 env_->SetStaticObjectField(c, s_fid, s2); \
1949 ASSERT_TRUE(env_->IsSameObject(s2, env_->GetStaticObjectField(c, s_fid))); \
1951 env_->SetObjectField(o, i_fid, s1); \
1952 ASSERT_TRUE(env_->IsSameObject(s1, env_->GetObjectField(o, i_fid))); \
1953 env_->SetObjectField(o, i_fid, s2); \
1954 ASSERT_TRUE(env_->IsSameObject(s2, env_->GetObjectField(o, i_fid))); \
1966 EXPECT_EQ(env_->NewLocalRef(nullptr), nullptr);
1970 jstring s = env_->NewStringUTF("");
1972 jobject o = env_->NewLocalRef(s);
1976 EXPECT_EQ(JNILocalRefType, env_->GetObjectRefType(o));
1980 env_->DeleteLocalRef(nullptr);
1987 jstring s = env_->NewStringUTF("");
1989 env_->DeleteLocalRef(s);
1996 env_->DeleteLocalRef(s);
2000 env_->DeleteLocalRef(s);
2006 s = env_->NewStringUTF("");
2008 jobject o = env_->NewLocalRef(s);
2011 env_->DeleteLocalRef(s);
2012 env_->DeleteLocalRef(o);
2020 ASSERT_EQ(JNI_OK, env_->PushLocalFrame(0));
2021 env_->PopLocalFrame(nullptr);
2027 ASSERT_EQ(JNI_ERR, env_->PushLocalFrame(-1));
2034 jobject original = env_->NewStringUTF("");
2039 ScopedObjectAccess soa(env_);
2041 ASSERT_EQ(JNI_OK, env_->PushLocalFrame(4));
2042 outer = env_->NewLocalRef(original);
2045 ASSERT_EQ(JNI_OK, env_->PushLocalFrame(4));
2046 inner1 = env_->NewLocalRef(outer);
2047 inner2 = env_->NewStringUTF("survivor");
2048 EXPECT_NE(env_->PopLocalFrame(inner2), nullptr);
2051 EXPECT_EQ(JNILocalRefType, env_->GetObjectRefType(original));
2052 EXPECT_EQ(JNILocalRefType, env_->GetObjectRefType(outer));
2055 EXPECT_EQ(JNIInvalidRefType, env_->GetObjectRefType(inner1));
2063 EXPECT_EQ(JNIInvalidRefType, env_->GetObjectRefType(inner2));
2067 EXPECT_EQ(env_->PopLocalFrame(nullptr), nullptr);
2069 EXPECT_EQ(JNILocalRefType, env_->GetObjectRefType(original));
2071 EXPECT_EQ(JNIInvalidRefType, env_->GetObjectRefType(outer));
2073 EXPECT_EQ(JNIInvalidRefType, env_->GetObjectRefType(inner1));
2075 EXPECT_EQ(JNIInvalidRefType, env_->GetObjectRefType(inner2));
2081 ASSERT_NE(JNI_OK, env_->PushLocalFrame(std::numeric_limits<jint>::max()));
2082 ASSERT_TRUE(env_->ExceptionCheck());
2083 env_->ExceptionClear();
2087 ASSERT_EQ(JNI_OK, env_->PushLocalFrame(10));
2088 ASSERT_NE(JNI_OK, env_->PushLocalFrame(std::numeric_limits<jint>::max() - 10));
2089 ASSERT_TRUE(env_->ExceptionCheck());
2090 env_->ExceptionClear();
2091 EXPECT_EQ(env_->PopLocalFrame(nullptr), nullptr);
2097 ASSERT_EQ(JNI_OK, env_->PushLocalFrame(1024));
2098 EXPECT_EQ(env_->PopLocalFrame(nullptr), nullptr);
2102 EXPECT_EQ(env_->NewGlobalRef(nullptr), nullptr);
2106 jstring s = env_->NewStringUTF("");
2108 jobject o = env_->NewGlobalRef(s);
2112 EXPECT_EQ(env_->GetObjectRefType(o), JNIGlobalRefType);
2116 env_->DeleteGlobalRef(nullptr);
2123 jstring s = env_->NewStringUTF("");
2126 jobject o = env_->NewGlobalRef(s);
2128 env_->DeleteGlobalRef(o);
2135 env_->DeleteGlobalRef(o);
2139 env_->DeleteGlobalRef(o);
2145 jobject o1 = env_->NewGlobalRef(s);
2147 jobject o2 = env_->NewGlobalRef(s);
2150 env_->DeleteGlobalRef(o1);
2151 env_->DeleteGlobalRef(o2);
2155 EXPECT_EQ(env_->NewWeakGlobalRef(nullptr), nullptr);
2159 jstring s = env_->NewStringUTF("");
2161 jobject o = env_->NewWeakGlobalRef(s);
2165 EXPECT_EQ(env_->GetObjectRefType(o), JNIWeakGlobalRefType);
2169 env_->DeleteWeakGlobalRef(nullptr);
2176 jstring s = env_->NewStringUTF("");
2179 jobject o = env_->NewWeakGlobalRef(s);
2181 env_->DeleteWeakGlobalRef(o);
2188 env_->DeleteWeakGlobalRef(o);
2192 env_->DeleteWeakGlobalRef(o);
2198 jobject o1 = env_->NewWeakGlobalRef(s);
2200 jobject o2 = env_->NewWeakGlobalRef(s);
2203 env_->DeleteWeakGlobalRef(o1);
2204 env_->DeleteWeakGlobalRef(o2);
2209 env_->ExceptionClear();
2210 env_->ExceptionDescribe();
2214 jclass exception_class = env_->FindClass("java/lang/RuntimeException");
2216 jthrowable exception = reinterpret_cast<jthrowable>(env_->AllocObject(exception_class));
2219 EXPECT_EQ(JNI_OK, env_->Throw(exception));
2220 EXPECT_TRUE(env_->ExceptionCheck());
2221 jthrowable thrown_exception = env_->ExceptionOccurred();
2222 env_->ExceptionClear();
2223 EXPECT_TRUE(env_->IsSameObject(exception, thrown_exception));
2227 EXPECT_EQ(JNI_ERR, env_->Throw(nullptr));
2230 EXPECT_EQ(JNI_ERR, env_->Throw(nullptr));
2236 jclass exception_class = env_->FindClass("java/lang/RuntimeException");
2241 EXPECT_EQ(JNI_OK, env_->ThrowNew(exception_class, "hello world"));
2242 EXPECT_TRUE(env_->ExceptionCheck());
2243 thrown_exception = env_->ExceptionOccurred();
2244 env_->ExceptionClear();
2245 EXPECT_TRUE(env_->IsInstanceOf(thrown_exception, exception_class));
2247 EXPECT_EQ(JNI_OK, env_->ThrowNew(exception_class, nullptr));
2248 EXPECT_TRUE(env_->ExceptionCheck());
2249 thrown_exception = env_->ExceptionOccurred();
2250 env_->ExceptionClear();
2251 EXPECT_TRUE(env_->IsInstanceOf(thrown_exception, exception_class));
2256 EXPECT_EQ(JNI_ERR, env_->ThrowNew(nullptr, nullptr));
2259 EXPECT_EQ(JNI_ERR, env_->ThrowNew(nullptr, nullptr));
2281 jclass buffer_class = env_->FindClass("java/nio/Buffer");
2285 jobject buffer = env_->NewDirectByteBuffer(bytes, sizeof(bytes));
2287 ASSERT_TRUE(env_->IsInstanceOf(buffer, buffer_class));
2288 ASSERT_EQ(env_->GetDirectBufferAddress(buffer), bytes);
2289 ASSERT_EQ(env_->GetDirectBufferCapacity(buffer), static_cast<jlong>(sizeof(bytes)));
2293 env_->NewDirectByteBuffer(bytes, static_cast<jlong>(INT_MAX) + 1);
2303 jclass object_class = env_->FindClass("java/lang/Object");
2305 jobject object = env_->AllocObject(object_class);
2309 jclass imse_class = env_->FindClass("java/lang/IllegalMonitorStateException");
2315 env_->MonitorExit(object);
2316 EXPECT_TRUE(env_->ExceptionCheck());
2317 thrown_exception = env_->ExceptionOccurred();
2318 env_->ExceptionClear();
2319 EXPECT_TRUE(env_->IsInstanceOf(thrown_exception, imse_class));
2322 env_->MonitorEnter(object);
2323 EXPECT_FALSE(env_->ExceptionCheck());
2325 env_->MonitorExit(object);
2326 EXPECT_FALSE(env_->ExceptionCheck());
2331 env_->MonitorEnter(object);
2332 EXPECT_FALSE(env_->ExceptionCheck());
2336 env_->MonitorExit(object);
2337 EXPECT_FALSE(env_->ExceptionCheck());
2341 env_->MonitorExit(object);
2342 EXPECT_TRUE(env_->ExceptionCheck());
2343 thrown_exception = env_->ExceptionOccurred();
2344 env_->ExceptionClear();
2345 EXPECT_TRUE(env_->IsInstanceOf(thrown_exception, imse_class));
2350 env_->MonitorEnter(nullptr);
2352 env_->MonitorExit(nullptr);
2366 env_
2367 EXPECT_FALSE(env_->ExceptionCheck());
2370 env_->CallNonvirtualVoidMethod(jobj_, jklass_, jmethod_);
2387 env_->CallNonvirtualVoidMethod(jobj_, jklass_, jmethod_);
2418 jclass object_class = env_->FindClass("java/lang/Object");
2420 jobject object = env_->AllocObject(object_class);
2422 global_ref = env_->NewGlobalRef(object);
2426 env_->MonitorEnter(global_ref);
2427 ASSERT_TRUE(IsLocked(env_, global_ref));
2432 jint attach_result = vm_->AttachCurrentThread(&env_, nullptr);
2436 ASSERT_FALSE(IsLocked(env_, global_ref));
2439 env_->DeleteGlobalRef(global_ref);
2496 memcpy(&env_override, env_->functions, sizeof(JNINativeInterface));
2498 gOriginalEnv = env_->functions;
2502 jclass local = env_->FindClass("java/lang/Object");
2508 jobject global = env_->NewGlobalRef(local);
2510 env_->DeleteGlobalRef(global);
2515 jobject global2 = env_->NewGlobalRef(local);
2517 env_->DeleteGlobalRef(global2);
2538 reinterpret_cast<void*>(env_));