Fri, 24 Sep 2010 03:51:43 -0700
6986944: JSR 292 assert(caller_nm->is_method_handle_return(caller_frame.pc())) failed: must be MH call site
Reviewed-by: never, kvn
src/cpu/x86/vm/methodHandles_x86.cpp | file | annotate | diff | comparison | revisions | |
src/share/vm/ci/ciMethod.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/x86/vm/methodHandles_x86.cpp Wed Sep 22 23:51:03 2010 -0700 1.2 +++ b/src/cpu/x86/vm/methodHandles_x86.cpp Fri Sep 24 03:51:43 2010 -0700 1.3 @@ -346,7 +346,7 @@ 1.4 if (stack_dump_count > 64) stack_dump_count = 48; 1.5 for (i = 0; i < stack_dump_count; i += 4) { 1.6 printf(" dump at SP[%d] "INTPTR_FORMAT": "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT" "INTPTR_FORMAT"\n", 1.7 - i, &entry_sp[i+0], entry_sp[i+0], entry_sp[i+1], entry_sp[i+2], entry_sp[i+3]); 1.8 + i, (intptr_t) &entry_sp[i+0], entry_sp[i+0], entry_sp[i+1], entry_sp[i+2], entry_sp[i+3]); 1.9 } 1.10 print_method_handle(mh); 1.11 }
2.1 --- a/src/share/vm/ci/ciMethod.cpp Wed Sep 22 23:51:03 2010 -0700 2.2 +++ b/src/share/vm/ci/ciMethod.cpp Fri Sep 24 03:51:43 2010 -0700 2.3 @@ -735,7 +735,11 @@ 2.4 // Return true if the method is an instance of one of the two 2.5 // signature-polymorphic MethodHandle methods, invokeExact or invokeGeneric. 2.6 bool ciMethod::is_method_handle_invoke() const { 2.7 - if (!is_loaded()) return false; 2.8 + if (!is_loaded()) { 2.9 + bool flag = (holder()->name() == ciSymbol::java_dyn_MethodHandle() && 2.10 + methodOopDesc::is_method_handle_invoke_name(name()->sid())); 2.11 + return flag; 2.12 + } 2.13 VM_ENTRY_MARK; 2.14 return get_methodOop()->is_method_handle_invoke(); 2.15 }