1155 oop clazz = java_lang_invoke_MemberName::clazz(JNIHandles::resolve_non_null(mname_jh));
1156 return JNIHandles::make_local(THREAD, clazz);
1157 }
1158 JVM_END
1159
1160 JVM_ENTRY(jobject, MHN_getMemberVMInfo(JNIEnv *env, jobject igcls, jobject mname_jh)) {
1161 if (mname_jh == NULL) return NULL;
1162 Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
1163 intptr_t vmindex = java_lang_invoke_MemberName::vmindex(mname());
1164 Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
1165 objArrayHandle result = oopFactory::new_objArray(SystemDictionary::Object_klass(), 2, CHECK_NULL);
1166 jvalue vmindex_value; vmindex_value.j = (long)vmindex;
1167 oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL);
1168 result->obj_at_put(0, x);
1169 x = NULL;
1170 if (vmtarget == NULL) {
1171 x = NULL;
1172 } else if (vmtarget->is_klass()) {
1173 x = ((Klass*) vmtarget)->java_mirror();
1174 } else if (vmtarget->is_method()) {
1175 Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL);
1176 CallInfo info((Method*)vmtarget);
1177 x = MethodHandles::init_method_MemberName(mname2, info);
1178 }
1179 result->obj_at_put(1, x);
1180 return JNIHandles::make_local(env, result());
1181 }
1182 JVM_END
1183
1184
1185
1186 // static native int getMembers(Class<?> defc, String matchName, String matchSig,
1187 // int matchFlags, Class<?> caller, int skip, MemberName[] results);
1188 JVM_ENTRY(jint, MHN_getMembers(JNIEnv *env, jobject igcls,
1189 jclass clazz_jh, jstring name_jh, jstring sig_jh,
1190 int mflags, jclass caller_jh, jint skip, jobjectArray results_jh)) {
1191 if (clazz_jh == NULL || results_jh == NULL) return -1;
1192 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz_jh)));
1193
1194 objArrayHandle results(THREAD, (objArrayOop) JNIHandles::resolve(results_jh));
1195 if (results.is_null() || !results->is_objArray()) return -1;
1196
1197 TempNewSymbol name = NULL;
1198 TempNewSymbol sig = NULL;
|
1155 oop clazz = java_lang_invoke_MemberName::clazz(JNIHandles::resolve_non_null(mname_jh));
1156 return JNIHandles::make_local(THREAD, clazz);
1157 }
1158 JVM_END
1159
1160 JVM_ENTRY(jobject, MHN_getMemberVMInfo(JNIEnv *env, jobject igcls, jobject mname_jh)) {
1161 if (mname_jh == NULL) return NULL;
1162 Handle mname(THREAD, JNIHandles::resolve_non_null(mname_jh));
1163 intptr_t vmindex = java_lang_invoke_MemberName::vmindex(mname());
1164 Metadata* vmtarget = java_lang_invoke_MemberName::vmtarget(mname());
1165 objArrayHandle result = oopFactory::new_objArray(SystemDictionary::Object_klass(), 2, CHECK_NULL);
1166 jvalue vmindex_value; vmindex_value.j = (long)vmindex;
1167 oop x = java_lang_boxing_object::create(T_LONG, &vmindex_value, CHECK_NULL);
1168 result->obj_at_put(0, x);
1169 x = NULL;
1170 if (vmtarget == NULL) {
1171 x = NULL;
1172 } else if (vmtarget->is_klass()) {
1173 x = ((Klass*) vmtarget)->java_mirror();
1174 } else if (vmtarget->is_method()) {
1175 CallInfo info((Method*)vmtarget);
1176 methodHandle m = info.resolved_method();
1177 x = m->method_holder()->get_member_name(m->method_idnum());
1178 if (x == NULL) {
1179 Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL);
1180 x = MethodHandles::init_method_MemberName(mname2, info);
1181 }
1182 }
1183 result->obj_at_put(1, x);
1184 return JNIHandles::make_local(env, result());
1185 }
1186 JVM_END
1187
1188
1189
1190 // static native int getMembers(Class<?> defc, String matchName, String matchSig,
1191 // int matchFlags, Class<?> caller, int skip, MemberName[] results);
1192 JVM_ENTRY(jint, MHN_getMembers(JNIEnv *env, jobject igcls,
1193 jclass clazz_jh, jstring name_jh, jstring sig_jh,
1194 int mflags, jclass caller_jh, jint skip, jobjectArray results_jh)) {
1195 if (clazz_jh == NULL || results_jh == NULL) return -1;
1196 KlassHandle k(THREAD, java_lang_Class::as_Klass(JNIHandles::resolve_non_null(clazz_jh)));
1197
1198 objArrayHandle results(THREAD, (objArrayOop) JNIHandles::resolve(results_jh));
1199 if (results.is_null() || !results->is_objArray()) return -1;
1200
1201 TempNewSymbol name = NULL;
1202 TempNewSymbol sig = NULL;
|