hotspot/src/os_cpu/solaris_x86/vm/os_solaris_x86.cpp
changeset 41314 f815c3be1f2e
parent 41070 496463b4e206
child 42906 1a8db9cf1407
equal deleted inserted replaced
41312:90c5e4348212 41314:f815c3be1f2e
   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");