86 uint _region_stack_index;
87
88 // Indexes of recycled region stacks/overflow stacks
89 // Stacks of regions to be compacted are embedded in the tasks doing
90 // the compaction. A thread that executes the task extracts the
91 // region stack and drains it. These threads keep these region
92 // stacks for use during compaction task stealing. If a thread
93 // gets a second draining task, it pushed its current region stack
94 // index into the array _recycled_stack_index and gets a new
95 // region stack from the task. A thread that is executing a
96 // compaction stealing task without ever having executing a
97 // draining task, will get a region stack from _recycled_stack_index.
98 //
99 // Array of indexes into the array of region stacks.
100 static uint* _recycled_stack_index;
101 // The index into _recycled_stack_index of the last region stack index
102 // pushed. If -1, there are no entries into _recycled_stack_index.
103 static int _recycled_top;
104 // The index into _recycled_stack_index of the last region stack index
105 // popped. If -1, there has not been any entry popped.
106 static int _recycled_bottom;
107
108 static ParMarkBitMap* _mark_bitmap;
109
110 Action _action;
111
112 HeapWord* _last_query_beg;
113 oop _last_query_obj;
114 size_t _last_query_ret;
115
116 static PSOldGen* old_gen() { return _old_gen; }
117 static ObjectStartArray* start_array() { return _start_array; }
118 static OopTaskQueueSet* stack_array() { return _stack_array; }
119
120 static void initialize(ParMarkBitMap* mbm);
121
122 protected:
123 // Array of tasks. Needed by the ParallelTaskTerminator.
124 static RegionTaskQueueSet* region_array() { return _region_array; }
125 OverflowTaskQueue<oop, mtGC>* marking_stack() { return &_marking_stack; }
126
|
86 uint _region_stack_index;
87
88 // Indexes of recycled region stacks/overflow stacks
89 // Stacks of regions to be compacted are embedded in the tasks doing
90 // the compaction. A thread that executes the task extracts the
91 // region stack and drains it. These threads keep these region
92 // stacks for use during compaction task stealing. If a thread
93 // gets a second draining task, it pushed its current region stack
94 // index into the array _recycled_stack_index and gets a new
95 // region stack from the task. A thread that is executing a
96 // compaction stealing task without ever having executing a
97 // draining task, will get a region stack from _recycled_stack_index.
98 //
99 // Array of indexes into the array of region stacks.
100 static uint* _recycled_stack_index;
101 // The index into _recycled_stack_index of the last region stack index
102 // pushed. If -1, there are no entries into _recycled_stack_index.
103 static int _recycled_top;
104 // The index into _recycled_stack_index of the last region stack index
105 // popped. If -1, there has not been any entry popped.
106 static volatile int _recycled_bottom;
107
108 static ParMarkBitMap* _mark_bitmap;
109
110 Action _action;
111
112 HeapWord* _last_query_beg;
113 oop _last_query_obj;
114 size_t _last_query_ret;
115
116 static PSOldGen* old_gen() { return _old_gen; }
117 static ObjectStartArray* start_array() { return _start_array; }
118 static OopTaskQueueSet* stack_array() { return _stack_array; }
119
120 static void initialize(ParMarkBitMap* mbm);
121
122 protected:
123 // Array of tasks. Needed by the ParallelTaskTerminator.
124 static RegionTaskQueueSet* region_array() { return _region_array; }
125 OverflowTaskQueue<oop, mtGC>* marking_stack() { return &_marking_stack; }
126
|