hotspot/src/share/vm/gc_implementation/g1/concurrentMark.hpp
changeset 30577 de9fa7ccc1bc
parent 30568 d0a24d56d8ea
child 30611 6f7f529bdeed
equal deleted inserted replaced
30576:463e71cefd8f 30577:de9fa7ccc1bc
  1096   // it checks a bunch of conditions that might cause the marking step
  1096   // it checks a bunch of conditions that might cause the marking step
  1097   // to abort
  1097   // to abort
  1098   void regular_clock_call();
  1098   void regular_clock_call();
  1099   bool concurrent() { return _concurrent; }
  1099   bool concurrent() { return _concurrent; }
  1100 
  1100 
  1101   // Test whether objAddr might have already been passed over by the
  1101   // Test whether obj might have already been passed over by the
  1102   // mark bitmap scan, and so needs to be pushed onto the mark stack.
  1102   // mark bitmap scan, and so needs to be pushed onto the mark stack.
  1103   bool is_below_finger(HeapWord* objAddr, HeapWord* global_finger) const;
  1103   bool is_below_finger(oop obj, HeapWord* global_finger) const;
  1104 
  1104 
  1105   template<bool scan> void process_grey_object(oop obj);
  1105   template<bool scan> void process_grey_object(oop obj);
  1106 
  1106 
  1107 public:
  1107 public:
  1108   // It resets the task; it should be called right at the beginning of
  1108   // It resets the task; it should be called right at the beginning of
  1149   bool has_timed_out()          { return _has_timed_out; }
  1149   bool has_timed_out()          { return _has_timed_out; }
  1150   bool claimed()                { return _claimed; }
  1150   bool claimed()                { return _claimed; }
  1151 
  1151 
  1152   void set_cm_oop_closure(G1CMOopClosure* cm_oop_closure);
  1152   void set_cm_oop_closure(G1CMOopClosure* cm_oop_closure);
  1153 
  1153 
  1154   // It grays the object by marking it and, if necessary, pushing it
  1154   // Increment the number of references this task has visited.
  1155   // on the local queue
  1155   void increment_refs_reached() { ++_refs_reached; }
       
  1156 
       
  1157   // Grey the object by marking it.  If not already marked, push it on
       
  1158   // the local queue if below the finger.
       
  1159   // Precondition: obj is in region.
       
  1160   // Precondition: obj is below region's NTAMS.
       
  1161   inline void make_reference_grey(oop obj, HeapRegion* region);
       
  1162 
       
  1163   // Grey the object (by calling make_grey_reference) if required,
       
  1164   // e.g. obj is below its containing region's NTAMS.
       
  1165   // Precondition: obj is a valid heap object.
  1156   inline void deal_with_reference(oop obj);
  1166   inline void deal_with_reference(oop obj);
  1157 
  1167 
  1158   // It scans an object and visits its children.
  1168   // It scans an object and visits its children.
  1159   void scan_object(oop obj) { process_grey_object<true>(obj); }
  1169   void scan_object(oop obj) { process_grey_object<true>(obj); }
  1160 
  1170