38 // are swept during collection.
39 //
40 // See the corresponding .cpp file for a description of the specifics
41 // for that implementation.
42
43 class Mutex;
44
45 template <class Chunk>
46 class AdaptiveFreeList : public FreeList<Chunk> {
47 friend class CompactibleFreeListSpace;
48 friend class VMStructs;
49 // friend class PrintTreeCensusClosure<Chunk, FreeList_t>;
50
51 size_t _hint; // next larger size list with a positive surplus
52
53 AllocationStats _allocation_stats; // allocation-related statistics
54
55 public:
56
57 AdaptiveFreeList();
58 AdaptiveFreeList(Chunk* fc);
59
60 using FreeList<Chunk>::assert_proper_lock_protection;
61 #ifdef ASSERT
62 using FreeList<Chunk>::protecting_lock;
63 #endif
64 using FreeList<Chunk>::count;
65 using FreeList<Chunk>::size;
66 using FreeList<Chunk>::verify_chunk_in_free_list;
67 using FreeList<Chunk>::getFirstNChunksFromList;
68 using FreeList<Chunk>::print_on;
69 void return_chunk_at_head(Chunk* fc, bool record_return);
70 void return_chunk_at_head(Chunk* fc);
71 void return_chunk_at_tail(Chunk* fc, bool record_return);
72 void return_chunk_at_tail(Chunk* fc);
73 using FreeList<Chunk>::return_chunk_at_tail;
74 using FreeList<Chunk>::remove_chunk;
75 using FreeList<Chunk>::prepend;
76 using FreeList<Chunk>::print_labels_on;
77 using FreeList<Chunk>::get_chunk_at_head;
78
|
38 // are swept during collection.
39 //
40 // See the corresponding .cpp file for a description of the specifics
41 // for that implementation.
42
43 class Mutex;
44
45 template <class Chunk>
46 class AdaptiveFreeList : public FreeList<Chunk> {
47 friend class CompactibleFreeListSpace;
48 friend class VMStructs;
49 // friend class PrintTreeCensusClosure<Chunk, FreeList_t>;
50
51 size_t _hint; // next larger size list with a positive surplus
52
53 AllocationStats _allocation_stats; // allocation-related statistics
54
55 public:
56
57 AdaptiveFreeList();
58
59 using FreeList<Chunk>::assert_proper_lock_protection;
60 #ifdef ASSERT
61 using FreeList<Chunk>::protecting_lock;
62 #endif
63 using FreeList<Chunk>::count;
64 using FreeList<Chunk>::size;
65 using FreeList<Chunk>::verify_chunk_in_free_list;
66 using FreeList<Chunk>::getFirstNChunksFromList;
67 using FreeList<Chunk>::print_on;
68 void return_chunk_at_head(Chunk* fc, bool record_return);
69 void return_chunk_at_head(Chunk* fc);
70 void return_chunk_at_tail(Chunk* fc, bool record_return);
71 void return_chunk_at_tail(Chunk* fc);
72 using FreeList<Chunk>::return_chunk_at_tail;
73 using FreeList<Chunk>::remove_chunk;
74 using FreeList<Chunk>::prepend;
75 using FreeList<Chunk>::print_labels_on;
76 using FreeList<Chunk>::get_chunk_at_head;
77
|