< prev index next >

src/hotspot/share/gc/g1/g1OopClosures.hpp

Print this page

        

*** 105,115 **** class G1ParCopyHelper : public OopClosure { protected: G1CollectedHeap* _g1; G1ParScanThreadState* _par_scan_state; uint _worker_id; // Cache value from par_scan_state. ! Klass* _scanned_klass; G1ConcurrentMark* _cm; // Mark the object if it's not already marked. This is used to mark // objects pointed to by roots that are guaranteed not to move // during the GC (i.e., non-CSet objects). It is MT-safe. --- 105,115 ---- class G1ParCopyHelper : public OopClosure { protected: G1CollectedHeap* _g1; G1ParScanThreadState* _par_scan_state; uint _worker_id; // Cache value from par_scan_state. ! ClassLoaderData* _scanned_cld; G1ConcurrentMark* _cm; // Mark the object if it's not already marked. This is used to mark // objects pointed to by roots that are guaranteed not to move // during the GC (i.e., non-CSet objects). It is MT-safe.
*** 122,138 **** G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); ~G1ParCopyHelper() { } public: ! void set_scanned_klass(Klass* k) { _scanned_klass = k; } ! template <class T> inline void do_klass_barrier(T* p, oop new_obj); }; enum G1Barrier { G1BarrierNone, ! G1BarrierKlass }; enum G1Mark { G1MarkNone, G1MarkFromRoot, --- 122,139 ---- G1ParCopyHelper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state); ~G1ParCopyHelper() { } public: ! void set_scanned_cld(ClassLoaderData* cld) { _scanned_cld = cld; } ! inline void do_cld_barrier(oop new_obj); ! G1CollectedHeap* g1() { return _g1; } }; enum G1Barrier { G1BarrierNone, ! G1BarrierCLD }; enum G1Mark { G1MarkNone, G1MarkFromRoot,
*** 148,165 **** template <class T> void do_oop_work(T* p); virtual void do_oop(oop* p) { do_oop_work(p); } virtual void do_oop(narrowOop* p) { do_oop_work(p); } }; ! class G1KlassScanClosure : public KlassClosure { G1ParCopyHelper* _closure; bool _process_only_dirty; int _count; public: ! G1KlassScanClosure(G1ParCopyHelper* closure, bool process_only_dirty) ! : _process_only_dirty(process_only_dirty), _closure(closure), _count(0) {} ! void do_klass(Klass* klass); }; // Closure for iterating over object fields during concurrent marking class G1CMOopClosure : public MetadataAwareOopClosure { protected: --- 149,168 ---- template <class T> void do_oop_work(T* p); virtual void do_oop(oop* p) { do_oop_work(p); } virtual void do_oop(narrowOop* p) { do_oop_work(p); } }; ! class G1CLDScanClosure : public CLDClosure { G1ParCopyHelper* _closure; bool _process_only_dirty; + bool _must_claim; int _count; public: ! G1CLDScanClosure(G1ParCopyHelper* closure, ! bool process_only_dirty, bool must_claim) ! : _process_only_dirty(process_only_dirty), _must_claim(must_claim), _closure(closure), _count(0) {} ! void do_cld(ClassLoaderData* cld); }; // Closure for iterating over object fields during concurrent marking class G1CMOopClosure : public MetadataAwareOopClosure { protected:
< prev index next >