92 }
93 HeapWord* _ptr;
94 size_t _word_size;
95 size_t _refillSize;
96 size_t _allocation_size_limit; // Largest size that will be allocated
97
98 void print_on(outputStream* st) const;
99 };
100
101 // Concrete subclass of CompactibleSpace that implements
102 // a free list space, such as used in the concurrent mark sweep
103 // generation.
104
105 class CompactibleFreeListSpace: public CompactibleSpace {
106 friend class VMStructs;
107 friend class ConcurrentMarkSweepGeneration;
108 friend class CMSCollector;
109 // Local alloc buffer for promotion into this space.
110 friend class CompactibleFreeListSpaceLAB;
111 // Allow scan_and_* functions to call (private) overrides of the auxiliary functions on this class
112 template <typename SpaceType>
113 friend void CompactibleSpace::scan_and_adjust_pointers(SpaceType* space);
114 template <typename SpaceType>
115 friend void CompactibleSpace::scan_and_compact(SpaceType* space);
116 template <typename SpaceType>
117 friend void CompactibleSpace::verify_up_to_first_dead(SpaceType* space);
118 template <typename SpaceType>
119 friend void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* cp);
120
121 // "Size" of chunks of work (executed during parallel remark phases
122 // of CMS collection); this probably belongs in CMSCollector, although
123 // it's cached here because it's used in
124 // initialize_sequential_subtasks_for_rescan() which modifies
125 // par_seq_tasks which also lives in Space. XXX
126 const size_t _rescan_task_size;
127 const size_t _marking_task_size;
128
129 // Yet another sequential tasks done structure. This supports
130 // CMS GC, where we have threads dynamically
131 // claiming sub-tasks from a larger parallel task.
132 SequentialSubTasksDone _conc_par_seq_tasks;
133
134 BlockOffsetArrayNonContigSpace _bt;
135
136 CMSCollector* _collector;
137 ConcurrentMarkSweepGeneration* _old_gen;
138
139 // Data structures for free blocks (used during allocation/sweeping)
|
92 }
93 HeapWord* _ptr;
94 size_t _word_size;
95 size_t _refillSize;
96 size_t _allocation_size_limit; // Largest size that will be allocated
97
98 void print_on(outputStream* st) const;
99 };
100
101 // Concrete subclass of CompactibleSpace that implements
102 // a free list space, such as used in the concurrent mark sweep
103 // generation.
104
105 class CompactibleFreeListSpace: public CompactibleSpace {
106 friend class VMStructs;
107 friend class ConcurrentMarkSweepGeneration;
108 friend class CMSCollector;
109 // Local alloc buffer for promotion into this space.
110 friend class CompactibleFreeListSpaceLAB;
111 // Allow scan_and_* functions to call (private) overrides of the auxiliary functions on this class
112 #if INCLUDE_SERIALGC
113 template <typename SpaceType>
114 friend void CompactibleSpace::scan_and_adjust_pointers(SpaceType* space);
115 template <typename SpaceType>
116 friend void CompactibleSpace::scan_and_compact(SpaceType* space);
117 template <typename SpaceType>
118 friend void CompactibleSpace::verify_up_to_first_dead(SpaceType* space);
119 template <typename SpaceType>
120 friend void CompactibleSpace::scan_and_forward(SpaceType* space, CompactPoint* cp);
121 #endif
122
123 // "Size" of chunks of work (executed during parallel remark phases
124 // of CMS collection); this probably belongs in CMSCollector, although
125 // it's cached here because it's used in
126 // initialize_sequential_subtasks_for_rescan() which modifies
127 // par_seq_tasks which also lives in Space. XXX
128 const size_t _rescan_task_size;
129 const size_t _marking_task_size;
130
131 // Yet another sequential tasks done structure. This supports
132 // CMS GC, where we have threads dynamically
133 // claiming sub-tasks from a larger parallel task.
134 SequentialSubTasksDone _conc_par_seq_tasks;
135
136 BlockOffsetArrayNonContigSpace _bt;
137
138 CMSCollector* _collector;
139 ConcurrentMarkSweepGeneration* _old_gen;
140
141 // Data structures for free blocks (used during allocation/sweeping)
|