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 |