Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.hpp @ 14210:397385cc2c83
8028993: Full collections with ParallelScavenge slower in JDK 8 compared to 7u40
Summary: Reducing the number of calls to follow_class_loader to speed up the marking phase. Also removed some unnecessary calls to adjust_klass.
Reviewed-by: stefank, jmasa, mgerdin
author | sjohanss |
---|---|
date | Tue, 10 Dec 2013 10:31:00 +0100 |
parents | f2110083203d |
children | 63a4eb8bcd23 0982ec23da03 |
comparison
equal
deleted
inserted
replaced
14209:46e2a5b0c076 | 14210:397385cc2c83 |
---|---|
1198 // Check mark and maybe push on marking stack | 1198 // Check mark and maybe push on marking stack |
1199 template <class T> static inline void mark_and_push(ParCompactionManager* cm, | 1199 template <class T> static inline void mark_and_push(ParCompactionManager* cm, |
1200 T* p); | 1200 T* p); |
1201 template <class T> static inline void adjust_pointer(T* p); | 1201 template <class T> static inline void adjust_pointer(T* p); |
1202 | 1202 |
1203 static void follow_klass(ParCompactionManager* cm, Klass* klass); | 1203 static inline void follow_klass(ParCompactionManager* cm, Klass* klass); |
1204 static void adjust_klass(ParCompactionManager* cm, Klass* klass); | |
1205 | 1204 |
1206 static void follow_class_loader(ParCompactionManager* cm, | 1205 static void follow_class_loader(ParCompactionManager* cm, |
1207 ClassLoaderData* klass); | |
1208 static void adjust_class_loader(ParCompactionManager* cm, | |
1209 ClassLoaderData* klass); | 1206 ClassLoaderData* klass); |
1210 | 1207 |
1211 // Compaction support. | 1208 // Compaction support. |
1212 // Return true if p is in the range [beg_addr, end_addr). | 1209 // Return true if p is in the range [beg_addr, end_addr). |
1213 static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr); | 1210 static inline bool is_in(HeapWord* p, HeapWord* beg_addr, HeapWord* end_addr); |
1378 oopDesc::encode_store_heap_oop_not_null(p, new_obj); | 1375 oopDesc::encode_store_heap_oop_not_null(p, new_obj); |
1379 } | 1376 } |
1380 } | 1377 } |
1381 } | 1378 } |
1382 | 1379 |
1380 inline void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) { | |
1381 oop holder = klass->klass_holder(); | |
1382 PSParallelCompact::mark_and_push(cm, &holder); | |
1383 } | |
1384 | |
1383 template <class T> | 1385 template <class T> |
1384 inline void PSParallelCompact::KeepAliveClosure::do_oop_work(T* p) { | 1386 inline void PSParallelCompact::KeepAliveClosure::do_oop_work(T* p) { |
1385 mark_and_push(_compaction_manager, p); | 1387 mark_and_push(_compaction_manager, p); |
1386 } | 1388 } |
1387 | 1389 |