Home | History | Annotate | Download | only in runtime

Lines Matching refs:soa

87 static jweak AddWeakGlobalReference(ScopedObjectAccess& soa, Object* obj)
89 return soa.Vm()->AddWeakGlobalReference(soa.Self(), obj);
140 void InvokeWithArgArray(const ScopedObjectAccess& soa, ArtMethod* method,
144 if (UNLIKELY(soa.Env()->check_jni)) {
147 method->Invoke(soa.Self(), args, arg_array->GetNumBytes(), result, result_type);
150 static JValue InvokeWithVarArgs(const ScopedObjectAccess& soa, jobject obj,
153 ArtMethod* method = soa.DecodeMethod(mid);
154 Object* receiver = method->IsStatic() ? NULL : soa.Decode<Object*>(obj);
158 arg_array.BuildArgArray(soa, receiver, args);
159 InvokeWithArgArray(soa, method, &arg_array, &result, mh.GetShorty()[0]);
168 static JValue InvokeVirtualOrInterfaceWithJValues(const ScopedObjectAccess& soa,
171 Object* receiver = soa.Decode<Object*>(obj);
172 ArtMethod* method = FindVirtualMethod(receiver, soa.DecodeMethod(mid));
176 arg_array.BuildArgArray(soa, receiver, args);
177 InvokeWithArgArray(soa, method, &arg_array, &result, mh.GetShorty()[0]);
181 static JValue InvokeVirtualOrInterfaceWithVarArgs(const ScopedObjectAccess& soa,
184 Object* receiver = soa.Decode<Object*>(obj);
185 ArtMethod* method = FindVirtualMethod(receiver, soa.DecodeMethod(mid));
189 arg_array.BuildArgArray(soa, receiver, args);
190 InvokeWithArgArray(soa, method, &arg_array, &result, mh.GetShorty()[0]);
218 static void ThrowNoSuchMethodError(ScopedObjectAccess& soa, Class* c,
221 ThrowLocation throw_location = soa.Self()->GetCurrentLocationForThrow();
222 soa.Self()->ThrowNewExceptionF(throw_location, "Ljava/lang/NoSuchMethodError;",
227 static jmethodID FindMethodID(ScopedObjectAccess& soa, jclass jni_class,
230 Class* c = soa.Decode<Class*>(jni_class);
248 ThrowNoSuchMethodError(soa, c, name, sig, is_static ? "static" : "non-static");
252 return soa.EncodeMethod(method);
255 static ClassLoader* GetClassLoader(const ScopedObjectAccess& soa)
257 ArtMethod* method = soa.Self()->GetCurrentMethod(NULL);
259 if (method == soa.DecodeMethod(WellKnownClasses::java_lang_Runtime_nativeLoad)) {
260 return soa.Self()->GetClassLoaderOverride();
267 ClassLoader* class_loader = soa.Decode<ClassLoader*>(Runtime::Current()->GetSystemClassLoader());
272 class_loader = soa.Self()->GetClassLoaderOverride();
282 static jfieldID FindFieldID(const ScopedObjectAccess& soa, jclass jni_class, const char* name,
285 Class* c = soa.Decode<Class*>(jni_class);
294 ClassLoader* cl = GetClassLoader(soa);
301 DCHECK(soa.Self()->IsExceptionPending());
303 SirtRef<Throwable> cause(soa.Self(), soa.Self()->GetException(&throw_location));
304 soa.Self()->ClearException();
305 soa.Self()->ThrowNewExceptionF(throw_location, "Ljava/lang/NoSuchFieldError;",
309 soa.Self()->GetException(NULL)->SetCause(cause.get());
318 ThrowLocation throw_location = soa.Self()->GetCurrentLocationForThrow();
319 soa.Self()->ThrowNewExceptionF(throw_location, "Ljava/lang/NoSuchFieldError;",
324 return soa.EncodeField(field);
327 static void PinPrimitiveArray(const ScopedObjectAccess& soa, const Array* array)
329 JavaVMExt* vm = soa.Vm();
330 MutexLock mu(soa.Self(), vm->pins_lock);
334 static void UnpinPrimitiveArray(const ScopedObjectAccess& soa, const Array* array)
336 JavaVMExt* vm = soa.Vm();
337 MutexLock mu(soa.Self(), vm->pins_lock);
341 static void ThrowAIOOBE(ScopedObjectAccess& soa, Array* array, jsize start,
345 ThrowLocation throw_location = soa.Self()->GetCurrentLocationForThrow();
346 soa.Self()->ThrowNewExceptionF(throw_location, "Ljava/lang/ArrayIndexOutOfBoundsException;",
351 static void ThrowSIOOBE(ScopedObjectAccess& soa, jsize start, jsize length,
354 ThrowLocation throw_location = soa.Self()->GetCurrentLocationForThrow();
355 soa.Self()->ThrowNewExceptionF(throw_location, "Ljava/lang/StringIndexOutOfBoundsException;",
386 ScopedObjectAccess soa(env);
388 << PrettyClass(soa.Decode<Class*>(exception_class));
396 ScopedObjectAccess soa(env);
397 ThrowLocation throw_location = soa.Self()->GetCurrentLocationForThrow();
398 soa.Self()->SetException(throw_location, soa.Decode<Throwable*>(exception.get()));
607 JValue InvokeWithJValues(const ScopedObjectAccess& soa, jobject obj, jmethodID mid,
609 ArtMethod* method = soa.DecodeMethod(mid);
610 Object* receiver = method->IsStatic() ? NULL : soa.Decode<Object*>(obj);
614 arg_array.BuildArgArray(soa, receiver, args);
615 InvokeWithArgArray(soa, method, &arg_array, &result, mh.GetShorty()[0]);
645 ScopedObjectAccess soa(env);
648 ClassLoader* cl = GetClassLoader(soa);
653 return soa.AddLocalReference<jclass>(c);
658 ScopedObjectAccess soa(env);
661 ArtMethod* method = soa.Decode<ArtMethod*>(art_method);
663 return soa.EncodeMethod(method);
668 ScopedObjectAccess soa(env);
671 ArtField* field = soa.Decode<ArtField*>(art_field);
673 return soa.EncodeField(field);
678 ScopedObjectAccess soa(env);
679 ArtMethod* m = soa.DecodeMethod(mid);
680 jobject art_method = soa.AddLocalReference<jobject>(m);
694 ScopedObjectAccess soa(env);
695 ArtField* f = soa.DecodeField(fid);
696 jobject art_field = soa.AddLocalReference<jobject>(f);
710 ScopedObjectAccess soa(env);
711 Object* o = soa.Decode<Object*>(java_object);
712 return soa.AddLocalReference<jclass>(o->GetClass());
717 ScopedObjectAccess soa(env);
718 Class* c = soa.Decode<Class*>(java_class);
719 return soa.AddLocalReference<jclass>(c->GetSuperClass());
725 ScopedObjectAccess soa(env);
726 Class* c1 = soa.Decode<Class*>(java_class1);
727 Class* c2 = soa.Decode<Class*>(java_class2);
737 ScopedObjectAccess soa(env);
738 Object* obj = soa.Decode<Object*>(jobj);
739 Class* c = soa.Decode<Class*>(java_class);
745 ScopedObjectAccess soa(env);
746 Throwable* exception = soa.Decode<Throwable*>(java_exception);
750 ThrowLocation throw_location = soa.Self()->GetCurrentLocationForThrow();
751 soa.Self()->SetException(throw_location, exception);
769 ScopedObjectAccess soa(env);
771 SirtRef<Object> old_throw_this_object(soa.Self(), NULL);
772 SirtRef<ArtMethod> old_throw_method(soa.Self(), NULL);
773 SirtRef<Throwable> old_exception(soa.Self(), NULL);
777 Throwable* old_exception_obj = soa.Self()->GetException(&old_throw_location);
782 soa.Self()->ClearException();
784 ScopedLocalRef<jthrowable> exception(env, soa.AddLocalReference<jthrowable>(old_exception.get()));
792 if (soa.Self()->IsExceptionPending()) {
793 LOG(WARNING) << "JNI WARNING: " << PrettyTypeOf(soa.Self()->GetException(NULL))
795 soa.Self()->ClearException();
801 soa.Self()->SetException(gc_safe_throw_location, old_exception.get());
805 ScopedObjectAccess soa(env);
806 Object* exception = soa.Self()->GetException(NULL);
807 return soa.AddLocalReference<jthrowable>(exception);
823 ScopedObjectAccess soa(env);
824 Object* survivor = soa.Decode<Object*>(java_survivor);
825 soa.Env()->PopFrame();
826 return soa.AddLocalReference<jobject>(survivor);
837 ScopedObjectAccess soa(env);
838 JavaVMExt* vm = soa.Vm();
840 Object* decoded_obj = soa.Decode<Object*>(obj);
841 WriterMutexLock mu(soa.Self(), vm->globals_lock);
862 ScopedObjectAccess soa(env);
863 return AddWeakGlobalReference(soa, soa.Decode<Object*>(obj));
868 ScopedObjectAccess soa(env);
869 soa.Vm()->DeleteWeakGlobalRef(soa.Self(), obj);
877 ScopedObjectAccess soa(env);
878 return soa.AddLocalReference<jobject>(soa.Decode<Object*>(obj));
903 ScopedObjectAccess soa(env);
904 return (soa.Decode<Object*>(obj1) == soa
910 ScopedObjectAccess soa(env);
911 Class* c = soa.Decode<Class*>(java_class);
915 return soa.AddLocalReference<jobject>(c->AllocObject(soa.Self()));
931 ScopedObjectAccess soa(env);
932 Class* c = soa.Decode<Class*>(java_class);
936 Object* result = c->AllocObject(soa.Self());
940 jobject local_result = soa.AddLocalReference<jobject>(result);
942 if (!soa.Self()->IsExceptionPending()) {
952 ScopedObjectAccess soa(env);
953 Class* c = soa.Decode<Class*>(java_class);
957 Object* result = c->AllocObject(soa.Self());
961 jobject local_result = soa.AddLocalReference<jobjectArray>(result);
963 if (!soa.Self()->IsExceptionPending()) {
974 ScopedObjectAccess soa(env);
975 return FindMethodID(soa, java_class, name, sig, false);
983 ScopedObjectAccess soa(env);
984 return FindMethodID(soa, java_class, name, sig, true);
992 ScopedObjectAccess soa(env);
993 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
995 return soa.AddLocalReference<jobject>(result.GetL());
1001 ScopedObjectAccess soa(env);
1002 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args));
1003 return soa.AddLocalReference<jobject>(result.GetL());
1009 ScopedObjectAccess soa(env);
1010 JValue result(InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args));
1011 return soa.AddLocalReference<jobject>(result.GetL());
1019 ScopedObjectAccess soa(env);
1020 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1028 ScopedObjectAccess soa(env);
1029 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetZ();
1035 ScopedObjectAccess soa(env);
1036 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetZ();
1044 ScopedObjectAccess soa(env);
1045 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1053 ScopedObjectAccess soa(env);
1054 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetB();
1060 ScopedObjectAccess soa(env);
1061 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetB();
1069 ScopedObjectAccess soa(env);
1070 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1078 ScopedObjectAccess soa(env);
1079 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetC();
1085 ScopedObjectAccess soa(env);
1086 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetC();
1094 ScopedObjectAccess soa(env);
1095 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1103 ScopedObjectAccess soa(env);
1104 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetD();
1110 ScopedObjectAccess soa(env);
1111 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetD();
1119 ScopedObjectAccess soa(env);
1120 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1128 ScopedObjectAccess soa(env);
1129 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetF();
1135 ScopedObjectAccess soa(env);
1136 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetF();
1144 ScopedObjectAccess soa(env);
1145 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1153 ScopedObjectAccess soa(env);
1154 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetI();
1160 ScopedObjectAccess soa(env);
1161 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetI();
1169 ScopedObjectAccess soa(env);
1170 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1178 ScopedObjectAccess soa(env);
1179 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetJ();
1185 ScopedObjectAccess soa(env);
1186 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetJ();
1194 ScopedObjectAccess soa(env);
1195 JValue result(InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap));
1203 ScopedObjectAccess soa(env);
1204 return InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args).GetS();
1210 ScopedObjectAccess soa(env);
1211 return InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args).GetS();
1219 ScopedObjectAccess soa(env);
1220 InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, ap);
1227 ScopedObjectAccess soa(env);
1228 InvokeVirtualOrInterfaceWithVarArgs(soa, obj, mid, args);
1234 ScopedObjectAccess soa(env);
1235 InvokeVirtualOrInterfaceWithJValues(soa, obj, mid, args);
1243 ScopedObjectAccess soa(env);
1244 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1245 jobject local_result = soa.AddLocalReference<jobject>(result.GetL());
1254 ScopedObjectAccess soa(env);
1255 JValue result(InvokeWithVarArgs(soa, obj, mid, args));
1256 return soa.AddLocalReference<jobject>(result.GetL());
1263 ScopedObjectAccess soa(env);
1264 JValue result(InvokeWithJValues(soa, obj, mid, args));
1265 return soa.AddLocalReference<jobject>(result.GetL());
1274 ScopedObjectAccess soa(env);
1275 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1284 ScopedObjectAccess soa(env);
1285 return InvokeWithVarArgs(soa, obj, mid, args).GetZ();
1292 ScopedObjectAccess soa(env);
1293 return InvokeWithJValues(soa, obj, mid, args).GetZ();
1301 ScopedObjectAccess soa(env);
1302 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1311 ScopedObjectAccess soa(env);
1312 return InvokeWithVarArgs(soa, obj, mid, args).GetB();
1319 ScopedObjectAccess soa(env);
1320 return InvokeWithJValues(soa, obj, mid, args).GetB();
1328 ScopedObjectAccess soa(env);
1329 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1338 ScopedObjectAccess soa(env);
1339 return InvokeWithVarArgs(soa, obj, mid, args).GetC();
1346 ScopedObjectAccess soa(env);
1347 return InvokeWithJValues(soa, obj, mid, args).GetC();
1355 ScopedObjectAccess soa(env);
1356 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1365 ScopedObjectAccess soa(env);
1366 return InvokeWithVarArgs(soa, obj, mid, args).GetS();
1373 ScopedObjectAccess soa(env);
1374 return InvokeWithJValues(soa, obj, mid, args).GetS();
1382 ScopedObjectAccess soa(env);
1383 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1392 ScopedObjectAccess soa(env);
1393 return InvokeWithVarArgs(soa, obj, mid, args).GetI();
1400 ScopedObjectAccess soa(env);
1401 return InvokeWithJValues(soa, obj, mid, args).GetI();
1409 ScopedObjectAccess soa(env);
1410 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1419 ScopedObjectAccess soa(env);
1420 return InvokeWithVarArgs(soa, obj, mid, args).GetJ();
1427 ScopedObjectAccess soa(env);
1428 return InvokeWithJValues(soa, obj, mid, args).GetJ();
1436 ScopedObjectAccess soa(env);
1437 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1446 ScopedObjectAccess soa(env);
1447 return InvokeWithVarArgs(soa, obj, mid, args).GetF();
1454 ScopedObjectAccess soa(env);
1455 return InvokeWithJValues(soa, obj, mid, args).GetF();
1463 ScopedObjectAccess soa(env);
1464 JValue result(InvokeWithVarArgs(soa, obj, mid, ap));
1473 ScopedObjectAccess soa(env);
1474 return InvokeWithVarArgs(soa, obj, mid, args).GetD();
1481 ScopedObjectAccess soa(env);
1482 return InvokeWithJValues(soa, obj, mid, args).GetD();
1490 ScopedObjectAccess soa(env);
1491 InvokeWithVarArgs(soa, obj, mid, ap);
1499 ScopedObjectAccess soa(env);
1500 InvokeWithVarArgs(soa, obj, mid, args);
1507 ScopedObjectAccess soa(env);
1508 InvokeWithJValues(soa, obj, mid, args);
1515 ScopedObjectAccess soa(env);
1516 return FindFieldID(soa, java_class, name, sig, false);
1524 ScopedObjectAccess soa(env);
1525 return FindFieldID(soa, java_class, name, sig, true);
1531 ScopedObjectAccess soa(env);
1532 Object* o = soa.Decode<Object*>(obj);
1533 ArtField* f = soa.DecodeField(fid);
1534 return soa.AddLocalReference<jobject>(f->GetObject(o));
1539 ScopedObjectAccess soa(env);
1540 ArtField* f = soa.DecodeField(fid);
1541 return soa.AddLocalReference<jobject>(f->GetObject(f->GetDeclaringClass()));
1547 ScopedObjectAccess soa(env);
1548 Object* o = soa.Decode<Object*>(java_object);
1549 Object* v = soa.Decode<Object*>(java_value);
1550 ArtField* f = soa.DecodeField(fid);
1556 ScopedObjectAccess soa(env);
1557 Object* v = soa.Decode<Object*>(java_value);
1558 ArtField* f = soa.DecodeField(fid);
1565 ScopedObjectAccess soa(env); \
1566 Object* o = soa.Decode<Object*>(instance); \
1567 ArtField* f = soa.DecodeField(fid); \
1572 ScopedObjectAccess soa(env); \
1573 ArtField* f = soa.DecodeField(fid); \
1579 ScopedObjectAccess soa(env); \
1580 Object* o = soa.Decode<Object*>(instance); \
1581 ArtField* f = soa.DecodeField(fid); \
1586 ScopedObjectAccess soa(env); \
1587 ArtField* f = soa.DecodeField(fid); \
1722 ScopedObjectAccess soa(env);
1723 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1724 jobject local_result = soa.AddLocalReference<jobject>(result.GetL());
1731 ScopedObjectAccess soa(env);
1732 JValue result(InvokeWithVarArgs(soa, NULL, mid, args));
1733 return soa.AddLocalReference<jobject>(result.GetL());
1738 ScopedObjectAccess soa(env);
1739 JValue result(InvokeWithJValues(soa, NULL, mid, args));
1740 return soa.AddLocalReference<jobject>(result.GetL());
1747 ScopedObjectAccess soa(env);
1748 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1755 ScopedObjectAccess soa(env);
1756 return InvokeWithVarArgs(soa, NULL, mid, args).GetZ();
1761 ScopedObjectAccess soa(env);
1762 return InvokeWithJValues(soa, NULL, mid, args).GetZ();
1769 ScopedObjectAccess soa(env);
1770 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1777 ScopedObjectAccess soa(env);
1778 return InvokeWithVarArgs(soa, NULL, mid, args).GetB();
1783 ScopedObjectAccess soa(env);
1784 return InvokeWithJValues(soa, NULL, mid, args).GetB();
1791 ScopedObjectAccess soa(env);
1792 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1799 ScopedObjectAccess soa(env);
1800 return InvokeWithVarArgs(soa, NULL, mid, args).GetC();
1805 ScopedObjectAccess soa(env);
1806 return InvokeWithJValues(soa, NULL, mid, args).GetC();
1813 ScopedObjectAccess soa(env);
1814 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1821 ScopedObjectAccess soa(env);
1822 return InvokeWithVarArgs(soa, NULL, mid, args).GetS();
1827 ScopedObjectAccess soa(env);
1828 return InvokeWithJValues(soa, NULL, mid, args).GetS();
1835 ScopedObjectAccess soa(env);
1836 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1843 ScopedObjectAccess soa(env);
1844 return InvokeWithVarArgs(soa, NULL, mid, args).GetI();
1849 ScopedObjectAccess soa(env);
1850 return InvokeWithJValues(soa, NULL, mid, args).GetI();
1857 ScopedObjectAccess soa(env);
1858 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1865 ScopedObjectAccess soa(env);
1866 return InvokeWithVarArgs(soa, NULL, mid, args).GetJ();
1871 ScopedObjectAccess soa(env);
1872 return InvokeWithJValues(soa, NULL, mid, args).GetJ();
1879 ScopedObjectAccess soa(env);
1880 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1887 ScopedObjectAccess soa(env);
1888 return InvokeWithVarArgs(soa, NULL, mid, args).GetF();
1893 ScopedObjectAccess soa(env);
1894 return InvokeWithJValues(soa, NULL, mid, args).GetF();
1901 ScopedObjectAccess soa(env);
1902 JValue result(InvokeWithVarArgs(soa, NULL, mid, ap));
1909 ScopedObjectAccess soa(env);
1910 return InvokeWithVarArgs(soa, NULL, mid, args).GetD();
1915 ScopedObjectAccess soa(env);
1916 return InvokeWithJValues(soa, NULL, mid, args).GetD();
1923 ScopedObjectAccess soa(env);
1924 InvokeWithVarArgs(soa, NULL, mid, ap);
1930 ScopedObjectAccess soa(env);
1931 InvokeWithVarArgs(soa, NULL, mid, args);
1936 ScopedObjectAccess soa(env);
1937 InvokeWithJValues(soa, NULL, mid, args);
1944 ScopedObjectAccess soa(env);
1945 String* result = String::AllocFromUtf16(soa.Self(), char_count, chars);
1946 return soa.AddLocalReference<jstring>(result);
1953 ScopedObjectAccess soa(env);
1954 String* result = String::AllocFromModifiedUtf8(soa.Self(), utf);
1955 return soa.AddLocalReference<jstring>(result);
1960 ScopedObjectAccess soa(env);
1961 return soa.Decode<String*>(java_string)->GetLength();
1966 ScopedObjectAccess soa(env);
1967 return soa.Decode<String*>(java_string)->GetUtfLength();
1973 ScopedObjectAccess soa(env);
1974 String* s = soa.Decode<String*>(java_string);
1976 ThrowSIOOBE(soa, start, length, s->GetLength());
1987 ScopedObjectAccess soa(env);
1988 String* s = soa.Decode<String*>(java_string);
1990 ThrowSIOOBE(soa, start, length, s->GetLength());
2000 ScopedObjectAccess soa(env);
2001 String* s = soa.Decode<String*>(java_string);
2003 PinPrimitiveArray(soa, chars);
2012 ScopedObjectAccess soa(env);
2013 UnpinPrimitiveArray(soa, soa.Decode<String*>(java_string)->GetCharArray());
2031 ScopedObjectAccess soa(env);
2032 String* s = soa.Decode<String*>(java_string);
2048 ScopedObjectAccess soa(env);
2049 Object* obj = soa.Decode<Object*>(java_array);
2059 ScopedObjectAccess soa(env);
2060 ObjectArray<Object>* array = soa.Decode<ObjectArray<Object>*>(java_array);
2061 return soa.AddLocalReference<jobject>(array->Get(index));
2067 ScopedObjectAccess soa(env);
2068 ObjectArray<Object>* array = soa.Decode<ObjectArray<Object>*>(java_array);
2069 Object* value = soa.Decode<Object*>(java_value);
2074 ScopedObjectAccess soa(env);
2075 return NewPrimitiveArray<jbooleanArray, BooleanArray>(soa, length);
2079 ScopedObjectAccess soa(env);
2080 return NewPrimitiveArray<jbyteArray, ByteArray>(soa, length);
2084 ScopedObjectAccess soa(env);
2085 return NewPrimitiveArray<jcharArray, CharArray>(soa, length);
2089 ScopedObjectAccess soa(env);
2090 return NewPrimitiveArray<jdoubleArray, DoubleArray>(soa, length);
2094 ScopedObjectAccess soa(env);
2095 return NewPrimitiveArray<jfloatArray, FloatArray>(soa, length);
2099 ScopedObjectAccess soa(env);
2100 return NewPrimitiveArray<jintArray, IntArray>(soa, length);
2104 ScopedObjectAccess soa(env);
2105 return NewPrimitiveArray<jlongArray, LongArray>(soa, length);
2114 ScopedObjectAccess soa(env);
2115 Class* element_class = soa.Decode<Class*>(element_jclass);
2129 ObjectArray<Object>* result = ObjectArray<Object>::Alloc(soa.Self(), array_class, length);
2131 Object* initial_object = soa.Decode<Object*>(initial_element);
2136 return soa.AddLocalReference<jobjectArray>(result);
2140 ScopedObjectAccess soa(env);
2141 return NewPrimitiveArray<jshortArray, ShortArray>(soa, length);
2146 ScopedObjectAccess soa(env);
2147 Array* array = soa.Decode<Array*>(java_array);
2148 PinPrimitiveArray(soa, array);
2162 ScopedObjectAccess soa(env);
2163 return GetPrimitiveArray<jbooleanArray, jboolean*, BooleanArray>(soa, array, is_copy);
2168 ScopedObjectAccess soa(env);
2169 return GetPrimitiveArray<jbyteArray, jbyte*, ByteArray>(soa, array, is_copy);
2174 ScopedObjectAccess soa(env);
2175 return GetPrimitiveArray<jcharArray, jchar*, CharArray>(soa, array, is_copy);
2180 ScopedObjectAccess soa(env);
2181 return GetPrimitiveArray<jdoubleArray, jdouble*, DoubleArray>(soa, array, is_copy);
2186 ScopedObjectAccess soa(env);
2187 return GetPrimitiveArray<jfloatArray, jfloat*, FloatArray>(soa, array, is_copy);
2192 ScopedObjectAccess soa(env);
2193 return GetPrimitiveArray<jintArray, jint*, IntArray>(soa, array, is_copy);
2198 ScopedObjectAccess soa(env);
2199 return GetPrimitiveArray<jlongArray, jlong*, LongArray>(soa, array, is_copy);
2204 ScopedObjectAccess soa(env);
2205 return GetPrimitiveArray<jshortArray, jshort*, ShortArray>(soa, array, is_copy);
2242 ScopedObjectAccess soa(env);
2243 GetPrimitiveArrayRegion<jbooleanArray, jboolean, BooleanArray>(soa, array, start, length, buf);
2248 ScopedObjectAccess soa(env);
2249 GetPrimitiveArrayRegion<jbyteArray, jbyte, ByteArray>(soa, array, start, length, buf);
2254 ScopedObjectAccess soa(env);
2255 GetPrimitiveArrayRegion<jcharArray, jchar, CharArray>(soa, array, start, length, buf);
2260 ScopedObjectAccess soa(env);
2261 GetPrimitiveArrayRegion<jdoubleArray, jdouble, DoubleArray>(soa, array, start, length, buf);
2266 ScopedObjectAccess soa(env);
2267 GetPrimitiveArrayRegion<jfloatArray, jfloat, FloatArray>(soa, array, start, length, buf);
2272 ScopedObjectAccess soa(env);
2273 GetPrimitiveArrayRegion<jintArray, jint, IntArray>(soa, array, start, length, buf);
2278 ScopedObjectAccess soa(env);
2279 GetPrimitiveArrayRegion<jlongArray, jlong, LongArray>(soa, array, start, length, buf);
2284 ScopedObjectAccess soa(env);
2285 GetPrimitiveArrayRegion<jshortArray, jshort, ShortArray>(soa, array, start, length, buf);
2290 ScopedObjectAccess soa(env);
2291 SetPrimitiveArrayRegion<jbooleanArray, jboolean, BooleanArray>(soa, array, start, length, buf);
2296 ScopedObjectAccess soa(env);
2297 SetPrimitiveArrayRegion<jbyteArray, jbyte, ByteArray>(soa, array, start, length, buf);
2302 ScopedObjectAccess soa(env);
2303 SetPrimitiveArrayRegion<jcharArray, jchar, CharArray>(soa, array, start, length, buf);
2308 ScopedObjectAccess soa(env);
2309 SetPrimitiveArrayRegion<jdoubleArray, jdouble, DoubleArray>(soa, array, start, length, buf);
2314 ScopedObjectAccess soa(env);
2315 SetPrimitiveArrayRegion<jfloatArray, jfloat, FloatArray>(soa, array, start, length, buf);
2320 ScopedObjectAccess soa(env);
2321 SetPrimitiveArrayRegion<jintArray, jint, IntArray>(soa, array, start, length, buf);
2326 ScopedObjectAccess soa(env);
2327 SetPrimitiveArrayRegion<jlongArray, jlong, LongArray>(soa, array, start, length, buf);
2332 ScopedObjectAccess soa(env);
2333 SetPrimitiveArrayRegion<jshortArray, jshort, ShortArray>(soa, array, start, length, buf);
2348 ScopedObjectAccess soa(env);
2349 Class* c = soa.Decode<Class*>(java_class);
2372 ThrowNoSuchMethodError(soa, c, name, sig, "static or non-static");
2378 ThrowNoSuchMethodError(soa, c, name, sig, "native");
2384 m->RegisterNative(soa.Self(), methods[i].fnPtr);
2391 ScopedObjectAccess soa(env);
2392 Class* c = soa.Decode<Class*>(java_class);
2399 m->UnregisterNative(soa.Self());
2405 m->UnregisterNative(soa.Self());
2415 ScopedObjectAccess soa(env);
2416 Object* o = soa.Decode<Object*>(java_object);
2417 o->MonitorEnter(soa.Self());
2418 if (soa.Self()->IsExceptionPending()) {
2421 soa.Env()->monitors.Add(o);
2428 ScopedObjectAccess soa(env);
2429 Object* o = soa.Decode<Object*>(java_object);
2430 o->MonitorExit(soa.Self());
2431 if (soa.Self()->IsExceptionPending()) {
2434 soa.Env()->monitors.Remove(o);
2506 ScopedObjectAccess soa(env);
2507 if (soa.Decode<Object*>(java_object) == reinterpret_cast<Object*>(java_object)) {
2508 if (soa.Env()->locals.ContainsDirectPointer(reinterpret_cast<Object*>(java_object))) {
2531 ScopedObjectAccess soa(env);
2532 soa.Self()->ThrowOutOfMemoryError(caller);
2538 static JniT NewPrimitiveArray(const ScopedObjectAccess& soa, jsize length)
2543 ArtT* result = ArtT::Alloc(soa.Self(), length);
2544 return soa.AddLocalReference<JniT>(result);
2548 static CArrayT GetPrimitiveArray(ScopedObjectAccess& soa, ArrayT java_array,
2551 ArtArrayT* array = soa.Decode<ArtArrayT*>(java_array);
2552 PinPrimitiveArray(soa, array);
2562 ScopedObjectAccess soa(env);
2563 Array* array = soa.Decode<Array*>(java_array);
2564 UnpinPrimitiveArray(soa, array);
2569 static void GetPrimitiveArrayRegion(ScopedObjectAccess& soa, JavaArrayT java_array,
2573 ArrayT* array = soa.Decode<ArrayT*>(java_array);
2575 ThrowAIOOBE(soa, array, start, length, "src");
2584 static void SetPrimitiveArrayRegion(ScopedObjectAccess& soa, JavaArrayT java_array,
2588 ArrayT* array = soa.Decode<ArrayT*>(java_array);
2590 ThrowAIOOBE(soa, array, start, length, "dst");