176 // Debugging and logging support.
177 const char* name() const;
178 void print_on(outputStream* st) const PRODUCT_RETURN;
179
180 // Provides access to storage internals, for unit testing.
181 // Declare, but not define, the public class OopStorage::TestAccess.
182 // That class is defined as part of the unit-test. It "exports" the needed
183 // private types by providing public typedefs for them.
184 class TestAccess;
185
186 private:
187 class Block; // Fixed-size array of oops, plus bookkeeping.
188 class ActiveArray; // Array of Blocks, plus bookkeeping.
189 class AllocationListEntry; // Provides AllocationList links in a Block.
190
191 // Doubly-linked list of Blocks.
192 class AllocationList {
193 const Block* _head;
194 const Block* _tail;
195
196 // Noncopyable.
197 AllocationList(const AllocationList&);
198 AllocationList& operator=(const AllocationList&);
199
200 public:
201 AllocationList();
202 ~AllocationList();
203
204 Block* head();
205 Block* tail();
206 const Block* chead() const;
207 const Block* ctail() const;
208
209 Block* prev(Block& block);
210 Block* next(Block& block);
211
212 const Block* prev(const Block& block) const;
213 const Block* next(const Block& block) const;
214
215 void push_front(const Block& block);
216 void push_back(const Block& block);
217 void unlink(const Block& block);
218 };
|
176 // Debugging and logging support.
177 const char* name() const;
178 void print_on(outputStream* st) const PRODUCT_RETURN;
179
180 // Provides access to storage internals, for unit testing.
181 // Declare, but not define, the public class OopStorage::TestAccess.
182 // That class is defined as part of the unit-test. It "exports" the needed
183 // private types by providing public typedefs for them.
184 class TestAccess;
185
186 private:
187 class Block; // Fixed-size array of oops, plus bookkeeping.
188 class ActiveArray; // Array of Blocks, plus bookkeeping.
189 class AllocationListEntry; // Provides AllocationList links in a Block.
190
191 // Doubly-linked list of Blocks.
192 class AllocationList {
193 const Block* _head;
194 const Block* _tail;
195
196 NONCOPYABLE(AllocationList);
197
198 public:
199 AllocationList();
200 ~AllocationList();
201
202 Block* head();
203 Block* tail();
204 const Block* chead() const;
205 const Block* ctail() const;
206
207 Block* prev(Block& block);
208 Block* next(Block& block);
209
210 const Block* prev(const Block& block) const;
211 const Block* next(const Block& block) const;
212
213 void push_front(const Block& block);
214 void push_back(const Block& block);
215 void unlink(const Block& block);
216 };
|