< prev index next >

src/hotspot/share/runtime/vframe.hpp

Print this page
rev 53032 : imported patch 8215205
rev 53033 : imported patch at_scope


 261     _eliminated = eliminated;
 262     _owner_is_scalar_replaced = owner_is_scalar_replaced;
 263   }
 264   // Accessors
 265   oop        owner() const {
 266     assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");
 267     return _owner;
 268   }
 269   oop   owner_klass() const {
 270     assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
 271     return _owner_klass;
 272   }
 273   BasicLock* lock()  const { return _lock;  }
 274   bool eliminated()  const { return _eliminated; }
 275   bool owner_is_scalar_replaced()  const { return _owner_is_scalar_replaced; }
 276 };
 277 
 278 class vframeStreamCommon : StackObj {
 279  protected:
 280   // common

 281   frame        _frame;
 282   JavaThread*  _thread;
 283   RegisterMap  _reg_map;
 284   enum { interpreted_mode, compiled_mode, at_end_mode } _mode;
 285 


 286   int _sender_decode_offset;

 287 
 288   // Cached information
 289   Method* _method;
 290   int       _bci;
 291 
 292   // Should VM activations be ignored or not
 293   bool _stop_at_java_call_stub;
 294 
 295   bool fill_in_compiled_inlined_sender();
 296   void fill_from_compiled_frame(int decode_offset);
 297   void fill_from_compiled_native_frame();
 298 
 299   void fill_from_interpreter_frame();
 300   bool fill_from_frame();
 301 
 302   // Helper routine for security_get_caller_frame
 303   void skip_prefixed_method_and_wrappers();
 304 
 305   DEBUG_ONLY(void found_bad_method_frame() const;)
 306 
 307  public:
 308   // Constructor
 309   inline vframeStreamCommon(JavaThread* thread);
 310 
 311   // Accessors
 312   Method* method() const { return _method; }
 313   int bci() const { return _bci; }
 314   inline intptr_t* frame_id() const;
 315   address frame_pc() const { return _frame.pc(); }
 316 
 317   CodeBlob*          cb()         const { return _frame.cb();  }
 318   CompiledMethod*   nm()         const {
 319       assert( cb() != NULL && cb()->is_compiled(), "usage");
 320       return (CompiledMethod*) cb();
 321   }


 322 
 323   // Frame type
 324   inline bool is_interpreted_frame() const;
 325   inline bool is_entry_frame() const;
 326 
 327   // Iteration
 328   inline void next();
 329   void security_next();
 330 
 331   bool at_end() const { return _mode == at_end_mode; }
 332 
 333   // Implements security traversal. Skips depth no. of frame including
 334   // special security frames and prefixed native methods
 335   void security_get_caller_frame(int depth);
 336 
 337   // Helper routine for JVM_LatestUserDefinedLoader -- needed for 1.4
 338   // reflection implementation
 339   void skip_reflection_related_frames();
 340 };
 341 


 261     _eliminated = eliminated;
 262     _owner_is_scalar_replaced = owner_is_scalar_replaced;
 263   }
 264   // Accessors
 265   oop        owner() const {
 266     assert(!_owner_is_scalar_replaced, "should not be called for scalar replaced object");
 267     return _owner;
 268   }
 269   oop   owner_klass() const {
 270     assert(_owner_is_scalar_replaced, "should not be called for not scalar replaced object");
 271     return _owner_klass;
 272   }
 273   BasicLock* lock()  const { return _lock;  }
 274   bool eliminated()  const { return _eliminated; }
 275   bool owner_is_scalar_replaced()  const { return _owner_is_scalar_replaced; }
 276 };
 277 
 278 class vframeStreamCommon : StackObj {
 279  protected:
 280   // common
 281   frame        _prev_frame;
 282   frame        _frame;
 283   JavaThread*  _thread;
 284   RegisterMap  _reg_map;
 285   enum { interpreted_mode, compiled_mode, at_end_mode } _mode;
 286 
 287   // For compiled_mode
 288   int _decode_offset;
 289   int _sender_decode_offset;
 290   int _vframe_id;
 291 
 292   // Cached information
 293   Method* _method;
 294   int       _bci;
 295 
 296   // Should VM activations be ignored or not
 297   bool _stop_at_java_call_stub;
 298 
 299   bool fill_in_compiled_inlined_sender();
 300   void fill_from_compiled_frame(int decode_offset);
 301   void fill_from_compiled_native_frame();
 302 
 303   void fill_from_interpreter_frame();
 304   bool fill_from_frame();
 305 
 306   // Helper routine for security_get_caller_frame
 307   void skip_prefixed_method_and_wrappers();
 308 
 309   DEBUG_ONLY(void found_bad_method_frame() const;)
 310 
 311  public:
 312   // Constructor
 313   inline vframeStreamCommon(JavaThread* thread);
 314 
 315   // Accessors
 316   Method* method() const { return _method; }
 317   int bci() const { return _bci; }
 318   inline intptr_t* frame_id() const;
 319   address frame_pc() const { return _frame.pc(); }
 320 
 321   CodeBlob*          cb()         const { return _frame.cb();  }
 322   CompiledMethod*   nm()         const {
 323       assert( cb() != NULL && cb()->is_compiled(), "usage");
 324       return (CompiledMethod*) cb();
 325   }
 326 
 327   javaVFrame* asJavaVFrame();
 328 
 329   // Frame type
 330   inline bool is_interpreted_frame() const;
 331   inline bool is_entry_frame() const;
 332 
 333   // Iteration
 334   inline void next();
 335   void security_next();
 336 
 337   bool at_end() const { return _mode == at_end_mode; }
 338 
 339   // Implements security traversal. Skips depth no. of frame including
 340   // special security frames and prefixed native methods
 341   void security_get_caller_frame(int depth);
 342 
 343   // Helper routine for JVM_LatestUserDefinedLoader -- needed for 1.4
 344   // reflection implementation
 345   void skip_reflection_related_frames();
 346 };
 347 
< prev index next >