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

src/share/vm/prims/methodHandles.cpp

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

*** 1170,1183 **** if (vmtarget == NULL) { x = NULL; } else if (vmtarget->is_klass()) { x = ((Klass*) vmtarget)->java_mirror(); } else if (vmtarget->is_method()) { - Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL); CallInfo info((Method*)vmtarget); x = MethodHandles::init_method_MemberName(mname2, info); } result->obj_at_put(1, x); return JNIHandles::make_local(env, result()); } JVM_END --- 1170,1187 ---- if (vmtarget == NULL) { x = NULL; } else if (vmtarget->is_klass()) { x = ((Klass*) vmtarget)->java_mirror(); } else if (vmtarget->is_method()) { CallInfo info((Method*)vmtarget); + methodHandle m = info.resolved_method(); + x = m->method_holder()->get_member_name(m->method_idnum()); + if (x == NULL) { + Handle mname2 = MethodHandles::new_MemberName(CHECK_NULL); x = MethodHandles::init_method_MemberName(mname2, info); } + } result->obj_at_put(1, x); return JNIHandles::make_local(env, result()); } JVM_END
src/share/vm/prims/methodHandles.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File