Mercurial > hg > truffle
comparison src/cpu/x86/vm/frame_x86.cpp @ 4000:0abefdb54d21
7081938: JSR292: assert(magic_number_2() == MAGIC_NUMBER_2) failed
Reviewed-by: never, bdelsart
author | twisti |
---|---|
date | Tue, 11 Oct 2011 02:19:37 -0700 |
parents | 5432047c7db7 |
children | 448691f285a5 |
comparison
equal
deleted
inserted
replaced
3999:eba73e0c7780 | 4000:0abefdb54d21 |
---|---|
230 | 230 |
231 } | 231 } |
232 | 232 |
233 | 233 |
234 void frame::patch_pc(Thread* thread, address pc) { | 234 void frame::patch_pc(Thread* thread, address pc) { |
235 address* pc_addr = &(((address*) sp())[-1]); | |
235 if (TracePcPatching) { | 236 if (TracePcPatching) { |
236 tty->print_cr("patch_pc at address" INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "] ", | 237 tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "] ", |
237 &((address *)sp())[-1], ((address *)sp())[-1], pc); | 238 pc_addr, *pc_addr, pc); |
238 } | 239 } |
239 ((address *)sp())[-1] = pc; | 240 assert(_pc == *pc_addr, err_msg("must be: " INTPTR_FORMAT " == " INTPTR_FORMAT, _pc, *pc_addr)); |
241 *pc_addr = pc; | |
240 _cb = CodeCache::find_blob(pc); | 242 _cb = CodeCache::find_blob(pc); |
241 address original_pc = nmethod::get_deopt_original_pc(this); | 243 address original_pc = nmethod::get_deopt_original_pc(this); |
242 if (original_pc != NULL) { | 244 if (original_pc != NULL) { |
243 assert(original_pc == _pc, "expected original PC to be stored before patching"); | 245 assert(original_pc == _pc, "expected original PC to be stored before patching"); |
244 _deopt_state = is_deoptimized; | 246 _deopt_state = is_deoptimized; |
669 | 671 |
670 intptr_t *frame::initial_deoptimization_info() { | 672 intptr_t *frame::initial_deoptimization_info() { |
671 // used to reset the saved FP | 673 // used to reset the saved FP |
672 return fp(); | 674 return fp(); |
673 } | 675 } |
674 |