hotspot/src/share/vm/asm/codeBuffer.hpp
changeset 41685 7df85c88cdc0
parent 40010 e32d5e545789
child 46619 a3919f5e8d2b
equal deleted inserted replaced
41683:cd5d2527e163 41685:7df85c88cdc0
    90   relocInfo*  _locs_end;        // first byte after relocation information
    90   relocInfo*  _locs_end;        // first byte after relocation information
    91   relocInfo*  _locs_limit;      // first byte after relocation information buf
    91   relocInfo*  _locs_limit;      // first byte after relocation information buf
    92   address     _locs_point;      // last relocated position (grows upward)
    92   address     _locs_point;      // last relocated position (grows upward)
    93   bool        _locs_own;        // did I allocate the locs myself?
    93   bool        _locs_own;        // did I allocate the locs myself?
    94   bool        _frozen;          // no more expansion of this section
    94   bool        _frozen;          // no more expansion of this section
       
    95   bool        _scratch_emit;    // Buffer is used for scratch emit, don't relocate.
    95   char        _index;           // my section number (SECT_INST, etc.)
    96   char        _index;           // my section number (SECT_INST, etc.)
    96   CodeBuffer* _outer;           // enclosing CodeBuffer
    97   CodeBuffer* _outer;           // enclosing CodeBuffer
    97 
    98 
    98   // (Note:  _locs_point used to be called _last_reloc_offset.)
    99   // (Note:  _locs_point used to be called _last_reloc_offset.)
    99 
   100 
   106     _locs_end      = NULL;
   107     _locs_end      = NULL;
   107     _locs_limit    = NULL;
   108     _locs_limit    = NULL;
   108     _locs_point    = NULL;
   109     _locs_point    = NULL;
   109     _locs_own      = false;
   110     _locs_own      = false;
   110     _frozen        = false;
   111     _frozen        = false;
       
   112     _scratch_emit  = false;
   111     debug_only(_index = (char)-1);
   113     debug_only(_index = (char)-1);
   112     debug_only(_outer = (CodeBuffer*)badAddress);
   114     debug_only(_outer = (CodeBuffer*)badAddress);
   113   }
   115   }
   114 
   116 
   115   void initialize_outer(CodeBuffer* outer, int index) {
   117   void initialize_outer(CodeBuffer* outer, int index) {
   163   int         index() const         { return _index; }
   165   int         index() const         { return _index; }
   164   bool        is_allocated() const  { return _start != NULL; }
   166   bool        is_allocated() const  { return _start != NULL; }
   165   bool        is_empty() const      { return _start == _end; }
   167   bool        is_empty() const      { return _start == _end; }
   166   bool        is_frozen() const     { return _frozen; }
   168   bool        is_frozen() const     { return _frozen; }
   167   bool        has_locs() const      { return _locs_end != NULL; }
   169   bool        has_locs() const      { return _locs_end != NULL; }
       
   170 
       
   171   // Mark scratch buffer.
       
   172   void        set_scratch_emit()    { _scratch_emit = true; }
       
   173   bool        scratch_emit()        { return _scratch_emit; }
   168 
   174 
   169   CodeBuffer* outer() const         { return _outer; }
   175   CodeBuffer* outer() const         { return _outer; }
   170 
   176 
   171   // is a given address in this section?  (2nd version is end-inclusive)
   177   // is a given address in this section?  (2nd version is end-inclusive)
   172   bool contains(address pc) const   { return pc >= _start && pc <  _end; }
   178   bool contains(address pc) const   { return pc >= _start && pc <  _end; }