< prev index next >

src/share/vm/runtime/vframe.hpp

Print this page




 305   void skip_prefixed_method_and_wrappers();
 306 
 307  public:
 308   // Constructor
 309   vframeStreamCommon(JavaThread* thread) : _reg_map(thread, false) {
 310     _thread = thread;
 311   }
 312 
 313   // Accessors
 314   Method* method() const { return _method; }
 315   int bci() const { return _bci; }
 316   intptr_t* frame_id() const { return _frame.id(); }
 317   address frame_pc() const { return _frame.pc(); }
 318 
 319   CodeBlob*          cb()         const { return _frame.cb();  }
 320   nmethod*           nm()         const {
 321       assert( cb() != NULL && cb()->is_nmethod(), "usage");
 322       return (nmethod*) cb();
 323   }
 324 



 325   // Frame type
 326   bool is_interpreted_frame() const { return _frame.is_interpreted_frame(); }
 327   bool is_entry_frame() const       { return _frame.is_entry_frame(); }
 328 
 329   // Iteration
 330   void next() {
 331     // handle frames with inlining
 332     if (_mode == compiled_mode    && fill_in_compiled_inlined_sender()) return;
 333 
 334     // handle general case
 335     do {
 336       _frame = _frame.sender(&_reg_map);
 337     } while (!fill_from_frame());
 338   }
 339   void security_next();
 340 
 341   bool at_end() const { return _mode == at_end_mode; }
 342 
 343   // Implements security traversal. Skips depth no. of frame including
 344   // special security frames and prefixed native methods




 305   void skip_prefixed_method_and_wrappers();
 306 
 307  public:
 308   // Constructor
 309   vframeStreamCommon(JavaThread* thread) : _reg_map(thread, false) {
 310     _thread = thread;
 311   }
 312 
 313   // Accessors
 314   Method* method() const { return _method; }
 315   int bci() const { return _bci; }
 316   intptr_t* frame_id() const { return _frame.id(); }
 317   address frame_pc() const { return _frame.pc(); }
 318 
 319   CodeBlob*          cb()         const { return _frame.cb();  }
 320   nmethod*           nm()         const {
 321       assert( cb() != NULL && cb()->is_nmethod(), "usage");
 322       return (nmethod*) cb();
 323   }
 324 
 325   frame*             frame_pointer()    { return &_frame; }
 326   JavaThread*        thread()     const { return _thread; }
 327 
 328   // Frame type
 329   bool is_interpreted_frame() const { return _frame.is_interpreted_frame(); }
 330   bool is_entry_frame() const       { return _frame.is_entry_frame(); }
 331 
 332   // Iteration
 333   void next() {
 334     // handle frames with inlining
 335     if (_mode == compiled_mode    && fill_in_compiled_inlined_sender()) return;
 336 
 337     // handle general case
 338     do {
 339       _frame = _frame.sender(&_reg_map);
 340     } while (!fill_from_frame());
 341   }
 342   void security_next();
 343 
 344   bool at_end() const { return _mode == at_end_mode; }
 345 
 346   // Implements security traversal. Skips depth no. of frame including
 347   // special security frames and prefixed native methods


< prev index next >