src/share/vm/gc_implementation/parallelScavenge/pcTasks.hpp

Print this page
rev 2652 : 7085906: Replace the permgen allocated sentinelRef with a self-looped end
Summary: Remove the sentinelRef and let the last Reference in a discovered chain point back to itself.
Reviewed-by: TBD1, TBD2


  81 
  82 //
  83 // MarkFromRootsTask
  84 //
  85 // This task marks from all the roots to all live
  86 // objects.
  87 //
  88 //
  89 
  90 class MarkFromRootsTask : public GCTask {
  91  public:
  92   enum RootType {
  93     universe              = 1,
  94     jni_handles           = 2,
  95     threads               = 3,
  96     object_synchronizer   = 4,
  97     flat_profiler         = 5,
  98     management            = 6,
  99     jvmti                 = 7,
 100     system_dictionary     = 8,
 101     reference_processing  = 9,
 102     code_cache            = 10
 103   };
 104  private:
 105   RootType _root_type;
 106  public:
 107   MarkFromRootsTask(RootType value) : _root_type(value) {}
 108 
 109   char* name() { return (char *)"mark-from-roots-task"; }
 110 
 111   virtual void do_it(GCTaskManager* manager, uint which);
 112 };
 113 
 114 //
 115 // RefProcTaskProxy
 116 //
 117 // This task is used as a proxy to parallel reference processing tasks .
 118 //
 119 
 120 class RefProcTaskProxy : public GCTask {
 121   typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask;
 122   ProcessTask & _rp_task;




  81 
  82 //
  83 // MarkFromRootsTask
  84 //
  85 // This task marks from all the roots to all live
  86 // objects.
  87 //
  88 //
  89 
  90 class MarkFromRootsTask : public GCTask {
  91  public:
  92   enum RootType {
  93     universe              = 1,
  94     jni_handles           = 2,
  95     threads               = 3,
  96     object_synchronizer   = 4,
  97     flat_profiler         = 5,
  98     management            = 6,
  99     jvmti                 = 7,
 100     system_dictionary     = 8,
 101     code_cache            = 9

 102   };
 103  private:
 104   RootType _root_type;
 105  public:
 106   MarkFromRootsTask(RootType value) : _root_type(value) {}
 107 
 108   char* name() { return (char *)"mark-from-roots-task"; }
 109 
 110   virtual void do_it(GCTaskManager* manager, uint which);
 111 };
 112 
 113 //
 114 // RefProcTaskProxy
 115 //
 116 // This task is used as a proxy to parallel reference processing tasks .
 117 //
 118 
 119 class RefProcTaskProxy : public GCTask {
 120   typedef AbstractRefProcTaskExecutor::ProcessTask ProcessTask;
 121   ProcessTask & _rp_task;