< prev index next >

src/hotspot/share/prims/forte.cpp

Print this page

 75 
 76 class vframeStreamForte : public vframeStreamCommon {
 77  public:
 78   // constructor that starts with sender of frame fr (top_frame)
 79   vframeStreamForte(JavaThread *jt, frame fr, bool stop_at_java_call_stub);
 80   void forte_next();
 81 };
 82 
 83 
 84 static bool is_decipherable_compiled_frame(JavaThread* thread, frame* fr, CompiledMethod* nm);
 85 static bool is_decipherable_interpreted_frame(JavaThread* thread,
 86                                               frame* fr,
 87                                               Method** method_p,
 88                                               int* bci_p);
 89 
 90 
 91 
 92 
 93 vframeStreamForte::vframeStreamForte(JavaThread *jt,
 94                                      frame fr,
 95                                      bool stop_at_java_call_stub) : vframeStreamCommon(jt, false /* process_frames */) {

 96 
 97   _stop_at_java_call_stub = stop_at_java_call_stub;
 98   _frame = fr;
 99 
100   // We must always have a valid frame to start filling
101 
102   bool filled_in = fill_from_frame();
103 
104   assert(filled_in, "invariant");
105 
106 }
107 
108 
109 // Solaris SPARC Compiler1 needs an additional check on the grandparent
110 // of the top_frame when the parent of the top_frame is interpreted and
111 // the grandparent is compiled. However, in this method we do not know
112 // the relationship of the current _frame relative to the top_frame so
113 // we implement a more broad sanity check. When the previous callee is
114 // interpreted and the current sender is compiled, we verify that the
115 // current sender is also walkable. If it is not walkable, then we mark

 75 
 76 class vframeStreamForte : public vframeStreamCommon {
 77  public:
 78   // constructor that starts with sender of frame fr (top_frame)
 79   vframeStreamForte(JavaThread *jt, frame fr, bool stop_at_java_call_stub);
 80   void forte_next();
 81 };
 82 
 83 
 84 static bool is_decipherable_compiled_frame(JavaThread* thread, frame* fr, CompiledMethod* nm);
 85 static bool is_decipherable_interpreted_frame(JavaThread* thread,
 86                                               frame* fr,
 87                                               Method** method_p,
 88                                               int* bci_p);
 89 
 90 
 91 
 92 
 93 vframeStreamForte::vframeStreamForte(JavaThread *jt,
 94                                      frame fr,
 95                                      bool stop_at_java_call_stub) 
 96     : vframeStreamCommon(RegisterMap(jt, false, false, false)) {
 97 
 98   _stop_at_java_call_stub = stop_at_java_call_stub;
 99   _frame = fr;
100 
101   // We must always have a valid frame to start filling
102 
103   bool filled_in = fill_from_frame();
104 
105   assert(filled_in, "invariant");
106 
107 }
108 
109 
110 // Solaris SPARC Compiler1 needs an additional check on the grandparent
111 // of the top_frame when the parent of the top_frame is interpreted and
112 // the grandparent is compiled. However, in this method we do not know
113 // the relationship of the current _frame relative to the top_frame so
114 // we implement a more broad sanity check. When the previous callee is
115 // interpreted and the current sender is compiled, we verify that the
116 // current sender is also walkable. If it is not walkable, then we mark
< prev index next >