hotspot/src/share/vm/memory/metachunk.hpp
changeset 15086 2bfd799e9147
parent 14588 8ec26d2d9339
child 17101 3a82a58d9aa9
equal deleted inserted replaced
15085:e0b0c4bbad19 15086:2bfd799e9147
    65   void set_end(MetaWord* v) { _end = v; }
    65   void set_end(MetaWord* v) { _end = v; }
    66   void set_top(MetaWord* v) { _top = v; }
    66   void set_top(MetaWord* v) { _top = v; }
    67   void set_word_size(size_t v) { _word_size = v; }
    67   void set_word_size(size_t v) { _word_size = v; }
    68  public:
    68  public:
    69 #ifdef ASSERT
    69 #ifdef ASSERT
    70   Metachunk() : _bottom(NULL), _end(NULL), _top(NULL), _is_free(false) {}
    70   Metachunk() : _bottom(NULL), _end(NULL), _top(NULL), _is_free(false),
       
    71     _next(NULL), _prev(NULL) {}
    71 #else
    72 #else
    72   Metachunk() : _bottom(NULL), _end(NULL), _top(NULL) {}
    73   Metachunk() : _bottom(NULL), _end(NULL), _top(NULL),
       
    74     _next(NULL), _prev(NULL) {}
    73 #endif
    75 #endif
    74 
    76 
    75   // Used to add a Metachunk to a list of Metachunks
    77   // Used to add a Metachunk to a list of Metachunks
    76   void set_next(Metachunk* v) { _next = v; assert(v != this, "Boom");}
    78   void set_next(Metachunk* v) { _next = v; assert(v != this, "Boom");}
    77   void set_prev(Metachunk* v) { _prev = v; assert(v != this, "Boom");}
    79   void set_prev(Metachunk* v) { _prev = v; assert(v != this, "Boom");}
   100     link_next(ptr);
   102     link_next(ptr);
   101     if (ptr != NULL) ptr->link_prev(this);
   103     if (ptr != NULL) ptr->link_prev(this);
   102   }
   104   }
   103 
   105 
   104   // Reset top to bottom so chunk can be reused.
   106   // Reset top to bottom so chunk can be reused.
   105   void reset_empty() { _top = (_bottom + _overhead); }
   107   void reset_empty() { _top = (_bottom + _overhead); _next = NULL; _prev = NULL; }
   106   bool is_empty() { return _top == (_bottom + _overhead); }
   108   bool is_empty() { return _top == (_bottom + _overhead); }
   107 
   109 
   108   // used (has been allocated)
   110   // used (has been allocated)
   109   // free (available for future allocations)
   111   // free (available for future allocations)
   110   // capacity (total size of chunk)
   112   // capacity (total size of chunk)
   111   size_t used_word_size();
   113   size_t used_word_size() const;
   112   size_t free_word_size();
   114   size_t free_word_size() const;
   113   size_t capacity_word_size();
   115   size_t capacity_word_size()const;
   114 
   116 
   115   // Debug support
   117   // Debug support
   116 #ifdef ASSERT
   118 #ifdef ASSERT
   117   void* prev_addr() const { return (void*)&_prev; }
   119   void* prev_addr() const { return (void*)&_prev; }
   118   void* next_addr() const { return (void*)&_next; }
   120   void* next_addr() const { return (void*)&_next; }