hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
changeset 41314 f815c3be1f2e
parent 41070 496463b4e206
child 42905 1af223983f82
equal deleted inserted replaced
41312:90c5e4348212 41314:f815c3be1f2e
   189     // been generated while the compilers perform it before. To maintain
   189     // been generated while the compilers perform it before. To maintain
   190     // semantic consistency between interpreted and compiled frames, the
   190     // semantic consistency between interpreted and compiled frames, the
   191     // method returns the Java sender of the current frame.
   191     // method returns the Java sender of the current frame.
   192     *fr = os::fetch_frame_from_ucontext(thread, uc);
   192     *fr = os::fetch_frame_from_ucontext(thread, uc);
   193     if (!fr->is_first_java_frame()) {
   193     if (!fr->is_first_java_frame()) {
   194       assert(fr->safe_for_sender(thread), "Safety check");
   194       // get_frame_at_stack_banging_point() is only called when we
       
   195       // have well defined stacks so java_sender() calls do not need
       
   196       // to assert safe_for_sender() first.
   195       *fr = fr->java_sender();
   197       *fr = fr->java_sender();
   196     }
   198     }
   197   } else {
   199   } else {
   198     // more complex code with compiled code
   200     // more complex code with compiled code
   199     assert(!Interpreter::contains(pc), "Interpreted methods should have been handled above");
   201     assert(!Interpreter::contains(pc), "Interpreted methods should have been handled above");
   207       // has been pushed on the stack
   209       // has been pushed on the stack
   208       intptr_t* fp = os::Linux::ucontext_get_fp(uc);
   210       intptr_t* fp = os::Linux::ucontext_get_fp(uc);
   209       intptr_t* sp = os::Linux::ucontext_get_sp(uc);
   211       intptr_t* sp = os::Linux::ucontext_get_sp(uc);
   210       *fr = frame(sp + 1, fp, (address)*sp);
   212       *fr = frame(sp + 1, fp, (address)*sp);
   211       if (!fr->is_java_frame()) {
   213       if (!fr->is_java_frame()) {
   212         assert(fr->safe_for_sender(thread), "Safety check");
       
   213         assert(!fr->is_first_frame(), "Safety check");
   214         assert(!fr->is_first_frame(), "Safety check");
       
   215         // See java_sender() comment above.
   214         *fr = fr->java_sender();
   216         *fr = fr->java_sender();
   215       }
   217       }
   216     }
   218     }
   217   }
   219   }
   218   assert(fr->is_java_frame(), "Safety check");
   220   assert(fr->is_java_frame(), "Safety check");