comparison src/share/vm/gc_implementation/parallelScavenge/psPromotionManager.hpp @ 12029:9766f73e770d

8022880: False sharing between PSPromotionManager instances Summary: Pad the PSPromotionManager instances in the manager array. Reviewed-by: brutisso, jmasa
author stefank
date Fri, 31 May 2013 14:32:44 +0200
parents f2110083203d
children 190899198332
comparison
equal deleted inserted replaced
12009:39127bb12d32 12029:9766f73e770d
27 27
28 #include "gc_implementation/parallelScavenge/psPromotionLAB.hpp" 28 #include "gc_implementation/parallelScavenge/psPromotionLAB.hpp"
29 #include "gc_implementation/shared/gcTrace.hpp" 29 #include "gc_implementation/shared/gcTrace.hpp"
30 #include "gc_implementation/shared/copyFailedInfo.hpp" 30 #include "gc_implementation/shared/copyFailedInfo.hpp"
31 #include "memory/allocation.hpp" 31 #include "memory/allocation.hpp"
32 #include "memory/padded.hpp"
33 #include "utilities/globalDefinitions.hpp"
32 #include "utilities/taskqueue.hpp" 34 #include "utilities/taskqueue.hpp"
33 35
34 // 36 //
35 // psPromotionManager is used by a single thread to manage object survival 37 // psPromotionManager is used by a single thread to manage object survival
36 // during a scavenge. The promotion manager contains thread local data only. 38 // during a scavenge. The promotion manager contains thread local data only.
49 51
50 class MutableSpace; 52 class MutableSpace;
51 class PSOldGen; 53 class PSOldGen;
52 class ParCompactionManager; 54 class ParCompactionManager;
53 55
54 class PSPromotionManager : public CHeapObj<mtGC> { 56 class PSPromotionManager VALUE_OBJ_CLASS_SPEC {
55 friend class PSScavenge; 57 friend class PSScavenge;
56 friend class PSRefProcTaskExecutor; 58 friend class PSRefProcTaskExecutor;
57 private: 59 private:
58 static PSPromotionManager** _manager_array; 60 static PaddedEnd<PSPromotionManager>* _manager_array;
59 static OopStarTaskQueueSet* _stack_array_depth; 61 static OopStarTaskQueueSet* _stack_array_depth;
60 static PSOldGen* _old_gen; 62 static PSOldGen* _old_gen;
61 static MutableSpace* _young_space; 63 static MutableSpace* _young_space;
62 64
63 #if TASKQUEUE_STATS 65 #if TASKQUEUE_STATS
64 size_t _masked_pushes; 66 size_t _masked_pushes;
65 size_t _masked_steals; 67 size_t _masked_steals;
66 size_t _arrays_chunked; 68 size_t _arrays_chunked;