7106944: assert(_pc == *pc_addr) failed may be too strong

Thu, 03 Nov 2011 04:12:49 -0700

author
twisti
date
Thu, 03 Nov 2011 04:12:49 -0700
changeset 3252
448691f285a5
parent 3251
e342a5110bed
child 3253
1feb272af3a7

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);

mercurial