src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot-comp Sdiff src/share/vm/prims

src/share/vm/prims/methodHandles.cpp

Print this page
rev 5514 : 8023004: JSR 292: java.lang.RuntimeException: Original target method was called.
Reviewed-by: ?
Contributed-by: sspitsyn


1177   oop clazz = java_lang_invoke_MemberName::clazz(JNIHandles::resolve_non_null(mname_jh));
1178   return JNIHandles::make_local(THREAD, clazz);
1179 }
1180 JVM_END
1181 
1182 JVM_ENTRY(jobject, MHN_getMemberVMInfo(JNIEnv *env, jobject igcls, jobject mname_jh)) {
1183   if (mname_jh == NULL)  return NULL;
1184   Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
1185   intptr_t vmindex  = java_lang_invoke_MemberName::vmindex(mname());
1186   Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
1187   objArrayHandle result = oopFactory::new_objArray(SystemDictionary::Object_klass(), 2, CHECK_NULL);
1188   jvalue vmindex_value; vmindex_value.j = (long)vmindex;
1189   oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL);
1190   result->obj_at_put(0, x);
1191   x = NULL;
1192   if (vmtarget == NULL) {
1193     x = NULL;
1194   } else if (vmtarget->is_klass()) {
1195     x = ((Klass*) vmtarget)->java_mirror();
1196   } else if (vmtarget->is_method()) {
1197     Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL);
1198     CallInfo info((Method*)vmtarget);
1199     x = MethodHandles::init_method_MemberName(mname2, info);
1200   }
1201   result->obj_at_put(1, x);
1202   return JNIHandles::make_local(env, result());
1203 }
1204 JVM_END
1205 
1206 
1207 
1208 //  static native int getMembers(Class<?> defc, String matchName, String matchSig,
1209 //          int matchFlags, Class<?> caller, int skip, MemberName[] results);
1210 JVM_ENTRY(jint, MHN_getMembers(JNIEnv *env, jobject igcls,
1211                                jclass clazz_jh, jstring name_jh, jstring sig_jh,
1212                                int mflags, jclass caller_jh, jint skip, jobjectArray results_jh)) {
1213   if (clazz_jh == NULL || results_jh == NULL)  return -1;
1214   KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz_jh)));
1215 
1216   objArrayHandle results(THREAD, (objArrayOop) JNIHandles::resolve(results_jh));
1217   if (results.is_null() || !results->is_objArray())  return -1;
1218 
1219   TempNewSymbol name = NULL;




1177   oop clazz = java_lang_invoke_MemberName::clazz(JNIHandles::resolve_non_null(mname_jh));
1178   return JNIHandles::make_local(THREAD, clazz);
1179 }
1180 JVM_END
1181 
1182 JVM_ENTRY(jobject, MHN_getMemberVMInfo(JNIEnv *env, jobject igcls, jobject mname_jh)) {
1183   if (mname_jh == NULL)  return NULL;
1184   Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
1185   intptr_t vmindex  = java_lang_invoke_MemberName::vmindex(mname());
1186   Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
1187   objArrayHandle result = oopFactory::new_objArray(SystemDictionary::Object_klass(), 2, CHECK_NULL);
1188   jvalue vmindex_value; vmindex_value.j = (long)vmindex;
1189   oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL);
1190   result->obj_at_put(0, x);
1191   x = NULL;
1192   if (vmtarget == NULL) {
1193     x = NULL;
1194   } else if (vmtarget->is_klass()) {
1195     x = ((Klass*) vmtarget)->java_mirror();
1196   } else if (vmtarget->is_method()) {
1197     x = mname();


1198   }
1199   result->obj_at_put(1, x);
1200   return JNIHandles::make_local(env, result());
1201 }
1202 JVM_END
1203 
1204 
1205 
1206 //  static native int getMembers(Class<?> defc, String matchName, String matchSig,
1207 //          int matchFlags, Class<?> caller, int skip, MemberName[] results);
1208 JVM_ENTRY(jint, MHN_getMembers(JNIEnv *env, jobject igcls,
1209                                jclass clazz_jh, jstring name_jh, jstring sig_jh,
1210                                int mflags, jclass caller_jh, jint skip, jobjectArray results_jh)) {
1211   if (clazz_jh == NULL || results_jh == NULL)  return -1;
1212   KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz_jh)));
1213 
1214   objArrayHandle results(THREAD, (objArrayOop) JNIHandles::resolve(results_jh));
1215   if (results.is_null() || !results->is_objArray())  return -1;
1216 
1217   TempNewSymbol name = NULL;


src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File