138 HeapWord** top_addr() { return &_top; }
139 // Allocation helpers (return NULL if full).
140 inline HeapWord* allocate_impl(size_t word_size, HeapWord* end_value);
141 inline HeapWord* par_allocate_impl(size_t word_size, HeapWord* end_value);
142
143 public:
144 void reset_after_compaction() { set_top(compaction_top()); }
145
146 size_t used() const { return byte_size(bottom(), top()); }
147 size_t free() const { return byte_size(top(), end()); }
148 bool is_free_block(const HeapWord* p) const { return p >= top(); }
149
150 MemRegion used_region() const { return MemRegion(bottom(), top()); }
151
152 void object_iterate(ObjectClosure* blk);
153 void safe_object_iterate(ObjectClosure* blk);
154
155 void set_bottom(HeapWord* value);
156 void set_end(HeapWord* value);
157
158 HeapWord* scan_top() const;
159 void record_timestamp();
160 void reset_gc_time_stamp() { _gc_time_stamp = 0; }
161 unsigned get_gc_time_stamp() { return _gc_time_stamp; }
162 void record_retained_region();
163
164 // See the comment above in the declaration of _pre_dummy_top for an
165 // explanation of what it is.
166 void set_pre_dummy_top(HeapWord* pre_dummy_top) {
167 assert(is_in(pre_dummy_top) && pre_dummy_top <= top(), "pre-condition");
168 _pre_dummy_top = pre_dummy_top;
169 }
170 HeapWord* pre_dummy_top() {
171 return (_pre_dummy_top == NULL) ? top() : _pre_dummy_top;
172 }
173 void reset_pre_dummy_top() { _pre_dummy_top = NULL; }
174
175 virtual void clear(bool mangle_space);
176
177 HeapWord* block_start(const void* p);
|
138 HeapWord** top_addr() { return &_top; }
139 // Allocation helpers (return NULL if full).
140 inline HeapWord* allocate_impl(size_t word_size, HeapWord* end_value);
141 inline HeapWord* par_allocate_impl(size_t word_size, HeapWord* end_value);
142
143 public:
144 void reset_after_compaction() { set_top(compaction_top()); }
145
146 size_t used() const { return byte_size(bottom(), top()); }
147 size_t free() const { return byte_size(top(), end()); }
148 bool is_free_block(const HeapWord* p) const { return p >= top(); }
149
150 MemRegion used_region() const { return MemRegion(bottom(), top()); }
151
152 void object_iterate(ObjectClosure* blk);
153 void safe_object_iterate(ObjectClosure* blk);
154
155 void set_bottom(HeapWord* value);
156 void set_end(HeapWord* value);
157
158 void mangle_unused_area() PRODUCT_RETURN;
159 void mangle_unused_area_complete() PRODUCT_RETURN;
160
161 HeapWord* scan_top() const;
162 void record_timestamp();
163 void reset_gc_time_stamp() { _gc_time_stamp = 0; }
164 unsigned get_gc_time_stamp() { return _gc_time_stamp; }
165 void record_retained_region();
166
167 // See the comment above in the declaration of _pre_dummy_top for an
168 // explanation of what it is.
169 void set_pre_dummy_top(HeapWord* pre_dummy_top) {
170 assert(is_in(pre_dummy_top) && pre_dummy_top <= top(), "pre-condition");
171 _pre_dummy_top = pre_dummy_top;
172 }
173 HeapWord* pre_dummy_top() {
174 return (_pre_dummy_top == NULL) ? top() : _pre_dummy_top;
175 }
176 void reset_pre_dummy_top() { _pre_dummy_top = NULL; }
177
178 virtual void clear(bool mangle_space);
179
180 HeapWord* block_start(const void* p);
|