equal
deleted
inserted
replaced
74 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } |
74 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } |
75 }; |
75 }; |
76 |
76 |
77 class G1ParScanClosure : public G1ParClosureSuper { |
77 class G1ParScanClosure : public G1ParClosureSuper { |
78 public: |
78 public: |
79 G1ParScanClosure(G1CollectedHeap* g1, ReferenceProcessor* rp) : |
79 G1ParScanClosure(G1CollectedHeap* g1) : G1ParClosureSuper(g1) { } |
80 G1ParClosureSuper(g1) { |
|
81 assert(_ref_processor == NULL, "sanity"); |
|
82 _ref_processor = rp; |
|
83 } |
|
84 |
80 |
85 template <class T> void do_oop_nv(T* p); |
81 template <class T> void do_oop_nv(T* p); |
86 virtual void do_oop(oop* p) { do_oop_nv(p); } |
82 virtual void do_oop(oop* p) { do_oop_nv(p); } |
87 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } |
83 virtual void do_oop(narrowOop* p) { do_oop_nv(p); } |
|
84 |
|
85 void set_ref_processor(ReferenceProcessor* ref_processor) { _ref_processor = ref_processor; } |
88 }; |
86 }; |
89 |
87 |
90 // Add back base class for metadata |
88 // Add back base class for metadata |
91 class G1ParCopyHelper : public G1ParClosureSuper { |
89 class G1ParCopyHelper : public G1ParClosureSuper { |
92 protected: |
90 protected: |
102 // objects pointed to by roots that have been forwarded during a |
100 // objects pointed to by roots that have been forwarded during a |
103 // GC. It is MT-safe. |
101 // GC. It is MT-safe. |
104 void mark_forwarded_object(oop from_obj, oop to_obj); |
102 void mark_forwarded_object(oop from_obj, oop to_obj); |
105 public: |
103 public: |
106 G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); |
104 G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); |
|
105 G1ParCopyHelper(G1CollectedHeap* g1); |
107 |
106 |
108 void set_scanned_klass(Klass* k) { _scanned_klass = k; } |
107 void set_scanned_klass(Klass* k) { _scanned_klass = k; } |
109 template <class T> void do_klass_barrier(T* p, oop new_obj); |
108 template <class T> void do_klass_barrier(T* p, oop new_obj); |
110 }; |
109 }; |
111 |
110 |
127 |
126 |
128 public: |
127 public: |
129 G1ParCopyClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state, |
128 G1ParCopyClosure(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state, |
130 ReferenceProcessor* rp) : |
129 ReferenceProcessor* rp) : |
131 G1ParCopyHelper(g1, par_scan_state) { |
130 G1ParCopyHelper(g1, par_scan_state) { |
|
131 assert(_ref_processor == NULL, "sanity"); |
|
132 } |
|
133 |
|
134 G1ParCopyClosure(G1CollectedHeap* g1) : G1ParCopyHelper(g1) { |
132 assert(_ref_processor == NULL, "sanity"); |
135 assert(_ref_processor == NULL, "sanity"); |
133 } |
136 } |
134 |
137 |
135 template <class T> void do_oop_nv(T* p) { do_oop_work(p); } |
138 template <class T> void do_oop_nv(T* p) { do_oop_work(p); } |
136 virtual void do_oop(oop* p) { do_oop_nv(p); } |
139 virtual void do_oop(oop* p) { do_oop_nv(p); } |