equal
deleted
inserted
replaced
253 // been generated while the compilers perform it before. To maintain |
253 // been generated while the compilers perform it before. To maintain |
254 // semantic consistency between interpreted and compiled frames, the |
254 // semantic consistency between interpreted and compiled frames, the |
255 // method returns the Java sender of the current frame. |
255 // method returns the Java sender of the current frame. |
256 *fr = os::fetch_frame_from_ucontext(thread, uc); |
256 *fr = os::fetch_frame_from_ucontext(thread, uc); |
257 if (!fr->is_first_java_frame()) { |
257 if (!fr->is_first_java_frame()) { |
258 assert(fr->safe_for_sender(thread), "Safety check"); |
258 // get_frame_at_stack_banging_point() is only called when we |
|
259 // have well defined stacks so java_sender() calls do not need |
|
260 // to assert safe_for_sender() first. |
259 *fr = fr->java_sender(); |
261 *fr = fr->java_sender(); |
260 } |
262 } |
261 } else { |
263 } else { |
262 // more complex code with compiled code |
264 // more complex code with compiled code |
263 assert(!Interpreter::contains(pc), "Interpreted methods should have been handled above"); |
265 assert(!Interpreter::contains(pc), "Interpreted methods should have been handled above"); |
271 // has been pushed on the stack |
273 // has been pushed on the stack |
272 intptr_t* fp = os::Solaris::ucontext_get_fp(uc); |
274 intptr_t* fp = os::Solaris::ucontext_get_fp(uc); |
273 intptr_t* sp = os::Solaris::ucontext_get_sp(uc); |
275 intptr_t* sp = os::Solaris::ucontext_get_sp(uc); |
274 *fr = frame(sp + 1, fp, (address)*sp); |
276 *fr = frame(sp + 1, fp, (address)*sp); |
275 if (!fr->is_java_frame()) { |
277 if (!fr->is_java_frame()) { |
276 assert(fr->safe_for_sender(thread), "Safety check"); |
278 // See java_sender() comment above. |
277 *fr = fr->java_sender(); |
279 *fr = fr->java_sender(); |
278 } |
280 } |
279 } |
281 } |
280 } |
282 } |
281 assert(fr->is_java_frame(), "Safety check"); |
283 assert(fr->is_java_frame(), "Safety check"); |