equal
deleted
inserted
replaced
46 #ifdef ASSERT |
46 #ifdef ASSERT |
47 void RegisterMap::check_location_valid() { |
47 void RegisterMap::check_location_valid() { |
48 } |
48 } |
49 #endif |
49 #endif |
50 |
50 |
51 PRAGMA_FORMAT_MUTE_WARNINGS_FOR_GCC |
|
52 |
|
53 // Profiling/safepoint support |
51 // Profiling/safepoint support |
54 |
52 |
55 bool frame::safe_for_sender(JavaThread *thread) { |
53 bool frame::safe_for_sender(JavaThread *thread) { |
56 address sp = (address)_sp; |
54 address sp = (address)_sp; |
57 address fp = (address)_fp; |
55 address fp = (address)_fp; |
278 |
276 |
279 void frame::patch_pc(Thread* thread, address pc) { |
277 void frame::patch_pc(Thread* thread, address pc) { |
280 address* pc_addr = &(((address*) sp())[-1]); |
278 address* pc_addr = &(((address*) sp())[-1]); |
281 if (TracePcPatching) { |
279 if (TracePcPatching) { |
282 tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "]", |
280 tty->print_cr("patch_pc at address " INTPTR_FORMAT " [" INTPTR_FORMAT " -> " INTPTR_FORMAT "]", |
283 pc_addr, *pc_addr, pc); |
281 p2i(pc_addr), p2i(*pc_addr), p2i(pc)); |
284 } |
282 } |
285 // Either the return address is the original one or we are going to |
283 // Either the return address is the original one or we are going to |
286 // patch in the same address that's already there. |
284 // patch in the same address that's already there. |
287 assert(_pc == *pc_addr || pc == *pc_addr, "must be"); |
285 assert(_pc == *pc_addr || pc == *pc_addr, "must be"); |
288 *pc_addr = pc; |
286 *pc_addr = pc; |