1211
1212 jobject ret = NULL;
1213 DT_RETURN_MARK(AllocObject, jobject, (const jobject&)ret);
1214
1215 instanceOop i = alloc_object(clazz, CHECK_NULL);
1216 ret = JNIHandles::make_local(env, i);
1217 return ret;
1218 JNI_END
1219
1220 DT_RETURN_MARK_DECL(NewObjectA, jobject
1221 , HOTSPOT_JNI_NEWOBJECTA_RETURN(_ret_ref));
1222
1223 JNI_ENTRY(jobject, jni_NewObjectA(JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args))
1224 JNIWrapper("NewObjectA");
1225
1226 HOTSPOT_JNI_NEWOBJECTA_ENTRY(env, clazz, (uintptr_t) methodID);
1227
1228 jobject obj = NULL;
1229 DT_RETURN_MARK(NewObjectA, jobject, (const jobject)obj);
1230
1231 instanceOop i = alloc_object(clazz, CHECK_NULL);
1232 obj = JNIHandles::make_local(env, i);
1233 JavaValue jvalue(T_VOID);
1234 JNI_ArgumentPusherArray ap(methodID, args);
1235 jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
1236 return obj;
1237 JNI_END
1238
1239
1240 DT_RETURN_MARK_DECL(NewObjectV, jobject
1241 , HOTSPOT_JNI_NEWOBJECTV_RETURN(_ret_ref));
1242
1243 JNI_ENTRY(jobject, jni_NewObjectV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args))
1244 JNIWrapper("NewObjectV");
1245
1246 HOTSPOT_JNI_NEWOBJECTV_ENTRY(env, clazz, (uintptr_t) methodID);
1247
1248 jobject obj = NULL;
1249 DT_RETURN_MARK(NewObjectV, jobject, (const jobject&)obj);
1250
1251 instanceOop i = alloc_object(clazz, CHECK_NULL);
1252 obj = JNIHandles::make_local(env, i);
1253 JavaValue jvalue(T_VOID);
1254 JNI_ArgumentPusherVaArg ap(methodID, args);
1255 jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
1256 return obj;
1257 JNI_END
1258
1259
1260 DT_RETURN_MARK_DECL(NewObject, jobject
1261 , HOTSPOT_JNI_NEWOBJECT_RETURN(_ret_ref));
1262
1263 JNI_ENTRY(jobject, jni_NewObject(JNIEnv *env, jclass clazz, jmethodID methodID, ...))
1264 JNIWrapper("NewObject");
1265
1266 HOTSPOT_JNI_NEWOBJECT_ENTRY(env, clazz, (uintptr_t) methodID);
1267
1268 jobject obj = NULL;
1269 DT_RETURN_MARK(NewObject, jobject, (const jobject&)obj);
1270
1271 instanceOop i = alloc_object(clazz, CHECK_NULL);
1272 obj = JNIHandles::make_local(env, i);
1273 va_list args;
1274 va_start(args, methodID);
1275 JavaValue jvalue(T_VOID);
1276 JNI_ArgumentPusherVaArg ap(methodID, args);
1277 jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
1278 va_end(args);
1279 return obj;
1280 JNI_END
1281
1282
1283 JNI_ENTRY(jclass, jni_GetObjectClass(JNIEnv *env, jobject obj))
1284 JNIWrapper("GetObjectClass");
1285
1286 HOTSPOT_JNI_GETOBJECTCLASS_ENTRY(env, obj);
1287
1288 Klass* k = JNIHandles::resolve_non_null(obj)->klass();
1289 jclass ret =
1290 (jclass) JNIHandles::make_local(env, k->java_mirror());
1291
1292 HOTSPOT_JNI_GETOBJECTCLASS_RETURN(ret);
1293 return ret;
1294 JNI_END
1295
1296 JNI_ENTRY_NO_PRESERVE(jboolean, jni_IsInstanceOf(JNIEnv *env, jobject obj, jclass clazz))
1297 JNIWrapper("IsInstanceOf");
1298
|
1211
1212 jobject ret = NULL;
1213 DT_RETURN_MARK(AllocObject, jobject, (const jobject&)ret);
1214
1215 instanceOop i = alloc_object(clazz, CHECK_NULL);
1216 ret = JNIHandles::make_local(env, i);
1217 return ret;
1218 JNI_END
1219
1220 DT_RETURN_MARK_DECL(NewObjectA, jobject
1221 , HOTSPOT_JNI_NEWOBJECTA_RETURN(_ret_ref));
1222
1223 JNI_ENTRY(jobject, jni_NewObjectA(JNIEnv *env, jclass clazz, jmethodID methodID, const jvalue *args))
1224 JNIWrapper("NewObjectA");
1225
1226 HOTSPOT_JNI_NEWOBJECTA_ENTRY(env, clazz, (uintptr_t) methodID);
1227
1228 jobject obj = NULL;
1229 DT_RETURN_MARK(NewObjectA, jobject, (const jobject)obj);
1230
1231 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
1232 if (k == NULL) {
1233 ResourceMark rm(THREAD);
1234 THROW_(vmSymbols::java_lang_InstantiationException(), NULL);
1235 }
1236
1237 if (!k->is_value()) {
1238 instanceOop i = alloc_object(clazz, CHECK_NULL);
1239 obj = JNIHandles::make_local(env, i);
1240 JavaValue jvalue(T_VOID);
1241 JNI_ArgumentPusherArray ap(methodID, args);
1242 jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
1243 } else {
1244 JavaValue jvalue(T_VALUETYPE);
1245 JNI_ArgumentPusherArray ap(methodID, args);
1246 jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_NULL);
1247 obj = jvalue.get_jobject();
1248 }
1249 return obj;
1250 JNI_END
1251
1252
1253 DT_RETURN_MARK_DECL(NewObjectV, jobject
1254 , HOTSPOT_JNI_NEWOBJECTV_RETURN(_ret_ref));
1255
1256 JNI_ENTRY(jobject, jni_NewObjectV(JNIEnv *env, jclass clazz, jmethodID methodID, va_list args))
1257 JNIWrapper("NewObjectV");
1258
1259 HOTSPOT_JNI_NEWOBJECTV_ENTRY(env, clazz, (uintptr_t) methodID);
1260
1261 jobject obj = NULL;
1262 DT_RETURN_MARK(NewObjectV, jobject, (const jobject&)obj);
1263
1264 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
1265 if (k == NULL) {
1266 ResourceMark rm(THREAD);
1267 THROW_(vmSymbols::java_lang_InstantiationException(), NULL);
1268 }
1269
1270 if (!k->is_value()) {
1271 instanceOop i = alloc_object(clazz, CHECK_NULL);
1272 obj = JNIHandles::make_local(env, i);
1273 JavaValue jvalue(T_VOID);
1274 JNI_ArgumentPusherVaArg ap(methodID, args);
1275 jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
1276 } else {
1277 JavaValue jvalue(T_VALUETYPE);
1278 JNI_ArgumentPusherVaArg ap(methodID, args);
1279 jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_NULL);
1280 obj = jvalue.get_jobject();
1281 }
1282 return obj;
1283 JNI_END
1284
1285
1286 DT_RETURN_MARK_DECL(NewObject, jobject
1287 , HOTSPOT_JNI_NEWOBJECT_RETURN(_ret_ref));
1288
1289 JNI_ENTRY(jobject, jni_NewObject(JNIEnv *env, jclass clazz, jmethodID methodID, ...))
1290 JNIWrapper("NewObject");
1291
1292 HOTSPOT_JNI_NEWOBJECT_ENTRY(env, clazz, (uintptr_t) methodID);
1293
1294 jobject obj = NULL;
1295 DT_RETURN_MARK(NewObject, jobject, (const jobject&)obj);
1296
1297 Klass* k = java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz));
1298 if (k == NULL) {
1299 ResourceMark rm(THREAD);
1300 THROW_(vmSymbols::java_lang_InstantiationException(), NULL);
1301 }
1302
1303 if (!k->is_value()) {
1304 instanceOop i = alloc_object(clazz, CHECK_NULL);
1305 obj = JNIHandles::make_local(env, i);
1306 va_list args;
1307 va_start(args, methodID);
1308 JavaValue jvalue(T_VOID);
1309 JNI_ArgumentPusherVaArg ap(methodID, args);
1310 jni_invoke_nonstatic(env, &jvalue, obj, JNI_NONVIRTUAL, methodID, &ap, CHECK_NULL);
1311 va_end(args);
1312 } else {
1313 va_list args;
1314 va_start(args, methodID);
1315 JavaValue jvalue(T_VALUETYPE);
1316 JNI_ArgumentPusherVaArg ap(methodID, args);
1317 jni_invoke_static(env, &jvalue, NULL, JNI_STATIC, methodID, &ap, CHECK_NULL);
1318 va_end(args);
1319 obj = jvalue.get_jobject();
1320 }
1321 return obj;
1322 JNI_END
1323
1324
1325 JNI_ENTRY(jclass, jni_GetObjectClass(JNIEnv *env, jobject obj))
1326 JNIWrapper("GetObjectClass");
1327
1328 HOTSPOT_JNI_GETOBJECTCLASS_ENTRY(env, obj);
1329
1330 Klass* k = JNIHandles::resolve_non_null(obj)->klass();
1331 jclass ret =
1332 (jclass) JNIHandles::make_local(env, k->java_mirror());
1333
1334 HOTSPOT_JNI_GETOBJECTCLASS_RETURN(ret);
1335 return ret;
1336 JNI_END
1337
1338 JNI_ENTRY_NO_PRESERVE(jboolean, jni_IsInstanceOf(JNIEnv *env, jobject obj, jclass clazz))
1339 JNIWrapper("IsInstanceOf");
1340
|