< prev index next >

src/hotspot/share/code/codeBlob.hpp

Print this page
rev 54883 : 8213084: Rework and enhance Print[Opto]Assembly output
Reviewed-by:


 194   int frame_complete_offset() const              { return _frame_complete_offset; }
 195 
 196   // CodeCache support: really only used by the nmethods, but in order to get
 197   // asserts and certain bookkeeping to work in the CodeCache they are defined
 198   // virtual here.
 199   virtual bool is_zombie() const                 { return false; }
 200   virtual bool is_locked_by_vm() const           { return false; }
 201 
 202   virtual bool is_unloaded() const               { return false; }
 203   virtual bool is_not_entrant() const            { return false; }
 204 
 205   // GC support
 206   virtual bool is_alive() const                  = 0;
 207 
 208   // OopMap for frame
 209   ImmutableOopMapSet* oop_maps() const           { return _oop_maps; }
 210   void set_oop_maps(OopMapSet* p);
 211   const ImmutableOopMap* oop_map_for_return_address(address return_address);
 212   virtual void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) = 0;
 213 
 214   // Frame support
 215   int  frame_size() const                        { return _frame_size; }
 216   void set_frame_size(int size)                  { _frame_size = size; }
 217 
 218   // Returns true, if the next frame is responsible for GC'ing oops passed as arguments
 219   bool caller_must_gc_arguments(JavaThread* thread) const { return _caller_must_gc_arguments; }
 220 
 221   // Naming
 222   const char* name() const                       { return _name; }
 223   void set_name(const char* name)                { _name = name; }
 224 
 225   // Debugging
 226   virtual void verify() = 0;
 227   virtual void print() const;
 228   virtual void print_on(outputStream* st) const;
 229   virtual void print_value_on(outputStream* st) const;
 230   void dump_for_addr(address addr, outputStream* st, bool verbose) const;
 231   void print_code();
 232 




 233   // Print the comment associated with offset on stream, if there is one
 234   virtual void print_block_comment(outputStream* stream, address block_begin) const {
 235     intptr_t offset = (intptr_t)(block_begin - code_begin());
 236     _strings.print_block_comment(stream, offset);
 237   }
 238 
 239   // Transfer ownership of comments to this CodeBlob
 240   void set_strings(CodeStrings& strings) {
 241     assert(!is_aot(), "invalid on aot");
 242     _strings.assign(strings);
 243   }
 244 
 245   static ByteSize name_field_offset() {
 246     return byte_offset_of(CodeBlob, _name);
 247   }
 248 
 249   static ByteSize oop_maps_field_offset() {
 250     return byte_offset_of(CodeBlob, _oop_maps);
 251   }
 252 };




 194   int frame_complete_offset() const              { return _frame_complete_offset; }
 195 
 196   // CodeCache support: really only used by the nmethods, but in order to get
 197   // asserts and certain bookkeeping to work in the CodeCache they are defined
 198   // virtual here.
 199   virtual bool is_zombie() const                 { return false; }
 200   virtual bool is_locked_by_vm() const           { return false; }
 201 
 202   virtual bool is_unloaded() const               { return false; }
 203   virtual bool is_not_entrant() const            { return false; }
 204 
 205   // GC support
 206   virtual bool is_alive() const                  = 0;
 207 
 208   // OopMap for frame
 209   ImmutableOopMapSet* oop_maps() const           { return _oop_maps; }
 210   void set_oop_maps(OopMapSet* p);
 211   const ImmutableOopMap* oop_map_for_return_address(address return_address);
 212   virtual void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f) = 0;
 213 
 214   // Frame support. Sizes are in word units.
 215   int  frame_size() const                        { return _frame_size; }
 216   void set_frame_size(int size)                  { _frame_size = size; }
 217 
 218   // Returns true, if the next frame is responsible for GC'ing oops passed as arguments
 219   bool caller_must_gc_arguments(JavaThread* thread) const { return _caller_must_gc_arguments; }
 220 
 221   // Naming
 222   const char* name() const                       { return _name; }
 223   void set_name(const char* name)                { _name = name; }
 224 
 225   // Debugging
 226   virtual void verify() = 0;
 227   virtual void print() const;
 228   virtual void print_on(outputStream* st) const;
 229   virtual void print_value_on(outputStream* st) const;
 230   void dump_for_addr(address addr, outputStream* st, bool verbose) const;
 231   void print_code();
 232 
 233   bool has_block_comment(address block_begin) const {
 234     intptr_t offset = (intptr_t)(block_begin - code_begin());
 235     return _strings.has_block_comment(offset);
 236   }
 237   // Print the comment associated with offset on stream, if there is one
 238   virtual void print_block_comment(outputStream* stream, address block_begin) const {
 239     intptr_t offset = (intptr_t)(block_begin - code_begin());
 240     _strings.print_block_comment(stream, offset);
 241   }
 242 
 243   // Transfer ownership of comments to this CodeBlob
 244   void set_strings(CodeStrings& strings) {
 245     assert(!is_aot(), "invalid on aot");
 246     _strings.assign(strings);
 247   }
 248 
 249   static ByteSize name_field_offset() {
 250     return byte_offset_of(CodeBlob, _name);
 251   }
 252 
 253   static ByteSize oop_maps_field_offset() {
 254     return byte_offset_of(CodeBlob, _oop_maps);
 255   }
 256 };


< prev index next >