Thu, 03 Nov 2011 04:12:49 -0700
7106944: assert(_pc == *pc_addr) failed may be too strong
Reviewed-by: kvn, never
src/cpu/x86/vm/frame_x86.cpp | file | annotate | diff | comparison | revisions |
1.1 --- a/src/cpu/x86/vm/frame_x86.cpp Thu Nov 03 01:43:26 2011 -0700 1.2 +++ b/src/cpu/x86/vm/frame_x86.cpp Thu Nov 03 04:12:49 2011 -0700 1.3 @@ -234,10 +234,12 @@ 1.4 void frame::patch_pc(Thread* thread, address pc) { 1.5 address* pc_addr = &(((address*) sp())[-1]); 1.6 if (TracePcPatching) { 1.7 - tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "] ", 1.8 + tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "]", 1.9 pc_addr, *pc_addr, pc); 1.10 } 1.11 - assert(_pc == *pc_addr, err_msg("must be: " INTPTR_FORMAT " == " INTPTR_FORMAT, _pc, *pc_addr)); 1.12 + // Either the return address is the original one or we are going to 1.13 + // patch in the same address that's already there. 1.14 + assert(_pc == *pc_addr || pc == *pc_addr, "must be"); 1.15 *pc_addr = pc; 1.16 _cb = CodeCache::find_blob(pc); 1.17 address original_pc = nmethod::get_deopt_original_pc(this);