< prev index next >

src/hotspot/share/gc/shenandoah/shenandoahHeap.hpp

Print this page
rev 48920 : [backport] Use PLAB for evacuations instead of TLAB

@@ -31,10 +31,11 @@
 #include "gc/shenandoah/shenandoahSharedVariables.hpp"
 #include "gc/shenandoah/shenandoahWorkGroup.hpp"
 #include "services/memoryManager.hpp"
 
 class ConcurrentGCTimer;
+class PLABStats;
 class ShenandoahAsserts;
 class ShenandoahAllocTracker;
 class ShenandoahCollectorPolicy;
 class ShenandoahConnectionMatrix;
 class ShenandoahFastRegionSet;

@@ -317,10 +318,13 @@
 
   ShenandoahEvacOOMHandler _oom_evac_handler;
 
   ShenandoahSharedEnumFlag<GCCycleMode> _gc_cycle_mode;
 
+  PLABStats* _mutator_gclab_stats;
+  PLABStats* _collector_gclab_stats;
+
 #ifdef ASSERT
   int     _heap_expansion_count;
 #endif
 
 public:

@@ -368,12 +372,10 @@
   size_t tlab_capacity(Thread *thr) const /* override */;
   void object_iterate(ObjectClosure* cl) /* override */;
   void safe_object_iterate(ObjectClosure* cl) /* override */;
   size_t unsafe_max_tlab_alloc(Thread *thread) const /* override */;
   size_t max_tlab_size() const /* override */;
-  void resize_all_tlabs() /* override */;
-  void accumulate_statistics_all_gclabs() /* override */;
   HeapWord* tlab_post_allocation_setup(HeapWord* obj) /* override */;
   uint oop_extra_words() /* override */;
   size_t tlab_used(Thread* ignored) const /* override */;
   void stop() /* override */;
   virtual void safepoint_synchronize_begin();

@@ -401,10 +403,14 @@
 
   ShenandoahCollectorPolicy *shenandoahPolicy() const { return _shenandoah_policy; }
   ShenandoahPhaseTimings*   phase_timings()     const { return _phase_timings; }
   ShenandoahAllocTracker*   alloc_tracker()     const { return _alloc_tracker; }
 
+  void accumulate_statistics_all_gclabs();
+  PLABStats* mutator_gclab_stats()   const { return _mutator_gclab_stats; }
+  PLABStats* collector_gclab_stats() const { return _collector_gclab_stats; }
+
   inline ShenandoahHeapRegion* const heap_region_containing(const void* addr) const;
   inline size_t heap_region_index_containing(const void* addr) const;
   inline bool requires_marking(const void* entry) const;
 
   template <class T>

@@ -579,10 +585,13 @@
   // Call before starting evacuation.
   void enter_evacuation();
   // Call after finished with evacuation.
   void leave_evacuation();
 
+  void initialize_gclab(Thread* thread);
+  void finalize_mutator_gclab(Thread* thread);
+
 private:
   template<class T>
   inline void marked_object_iterate(ShenandoahHeapRegion* region, T* cl, HeapWord* limit);
 
   template<class T>
< prev index next >