< prev index next >

src/share/vm/gc/parallel/psCompactionManager.hpp

Print this page
rev 10742 : Make fields used in lock-free algorithms volatile


  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 


< prev index next >