< prev index next >

src/hotspot/share/prims/jni.cpp

Print this page




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 


< prev index next >