6986944: JSR 292 assert(caller_nm->is_method_handle_return(caller_frame.pc())) failed: must be MH call site
Reviewed-by: never, kvn
--- a/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp Wed Sep 22 23:51:03 2010 -0700
+++ b/hotspot/src/cpu/x86/vm/methodHandles_x86.cpp Fri Sep 24 03:51:43 2010 -0700
@@ -346,7 +346,7 @@
if (stack_dump_count > 64) stack_dump_count = 48;
for (i = 0; i < stack_dump_count; i += 4) {
printf(" dump at SP[%d] "INTPTR_FORMAT": "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT"\n",
- i, &entry_sp[i+0], entry_sp[i+0], entry_sp[i+1], entry_sp[i+2], entry_sp[i+3]);
+ i, (intptr_t) &entry_sp[i+0], entry_sp[i+0], entry_sp[i+1], entry_sp[i+2], entry_sp[i+3]);
}
print_method_handle(mh);
}
--- a/hotspot/src/share/vm/ci/ciMethod.cpp Wed Sep 22 23:51:03 2010 -0700
+++ b/hotspot/src/share/vm/ci/ciMethod.cpp Fri Sep 24 03:51:43 2010 -0700
@@ -735,7 +735,11 @@
// Return true if the method is an instance of one of the two
// signature-polymorphic MethodHandle methods, invokeExact or invokeGeneric.
bool ciMethod::is_method_handle_invoke() const {
- if (!is_loaded()) return false;
+ if (!is_loaded()) {
+ bool flag = (holder()->name() == ciSymbol::java_dyn_MethodHandle() &&
+ methodOopDesc::is_method_handle_invoke_name(name()->sid()));
+ return flag;
+ }
VM_ENTRY_MARK;
return get_methodOop()->is_method_handle_invoke();
}