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