< prev index next >

src/share/vm/runtime/frame.hpp

Print this page




 149 
 150   // for Profiling - acting on another frame. walks sender frames
 151   // if valid.
 152   frame profile_find_Java_sender_frame(JavaThread *thread);
 153   bool safe_for_sender(JavaThread *thread);
 154 
 155   // returns the sender, but skips conversion frames
 156   frame real_sender(RegisterMap* map) const;
 157 
 158   // returns the the sending Java frame, skipping any intermediate C frames
 159   // NB: receiver must not be first frame
 160   frame java_sender() const;
 161 
 162  private:
 163   // Helper methods for better factored code in frame::sender
 164   frame sender_for_compiled_frame(RegisterMap* map) const;
 165   frame sender_for_entry_frame(RegisterMap* map) const;
 166   frame sender_for_interpreter_frame(RegisterMap* map) const;
 167   frame sender_for_native_frame(RegisterMap* map) const;
 168 


 169   // All frames:
 170 
 171   // A low-level interface for vframes:
 172 
 173  public:
 174 
 175   intptr_t* addr_at(int index) const             { return &fp()[index];    }
 176   intptr_t  at(int index) const                  { return *addr_at(index); }
 177 
 178   // accessors for locals
 179   oop obj_at(int offset) const                   { return *obj_at_addr(offset);  }
 180   void obj_at_put(int offset, oop value)         { *obj_at_addr(offset) = value; }
 181 
 182   jint int_at(int offset) const                  { return *int_at_addr(offset);  }
 183   void int_at_put(int offset, jint value)        { *int_at_addr(offset) = value; }
 184 
 185   oop*      obj_at_addr(int offset) const        { return (oop*)     addr_at(offset); }
 186 
 187   oop*      adjusted_obj_at_addr(Method* method, int index) { return obj_at_addr(adjust_offset(method, index)); }
 188 




 149 
 150   // for Profiling - acting on another frame. walks sender frames
 151   // if valid.
 152   frame profile_find_Java_sender_frame(JavaThread *thread);
 153   bool safe_for_sender(JavaThread *thread);
 154 
 155   // returns the sender, but skips conversion frames
 156   frame real_sender(RegisterMap* map) const;
 157 
 158   // returns the the sending Java frame, skipping any intermediate C frames
 159   // NB: receiver must not be first frame
 160   frame java_sender() const;
 161 
 162  private:
 163   // Helper methods for better factored code in frame::sender
 164   frame sender_for_compiled_frame(RegisterMap* map) const;
 165   frame sender_for_entry_frame(RegisterMap* map) const;
 166   frame sender_for_interpreter_frame(RegisterMap* map) const;
 167   frame sender_for_native_frame(RegisterMap* map) const;
 168 
 169   bool entry_frame_is_safe(JavaThread* thread) const;
 170 
 171   // All frames:
 172 
 173   // A low-level interface for vframes:
 174 
 175  public:
 176 
 177   intptr_t* addr_at(int index) const             { return &fp()[index];    }
 178   intptr_t  at(int index) const                  { return *addr_at(index); }
 179 
 180   // accessors for locals
 181   oop obj_at(int offset) const                   { return *obj_at_addr(offset);  }
 182   void obj_at_put(int offset, oop value)         { *obj_at_addr(offset) = value; }
 183 
 184   jint int_at(int offset) const                  { return *int_at_addr(offset);  }
 185   void int_at_put(int offset, jint value)        { *int_at_addr(offset) = value; }
 186 
 187   oop*      obj_at_addr(int offset) const        { return (oop*)     addr_at(offset); }
 188 
 189   oop*      adjusted_obj_at_addr(Method* method, int index) { return obj_at_addr(adjust_offset(method, index)); }
 190 


< prev index next >