Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/psParallelCompact.cpp @ 13438:ad72068ac41e
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 | 86e6d691f2e1 |
children | 63a4eb8bcd23 270d7cb38f40 |
comparison
equal
deleted
inserted
replaced
13437:1de8e5356754 | 13438:ad72068ac41e |
---|---|
2431 // Clean up unreferenced symbols in symbol table. | 2431 // Clean up unreferenced symbols in symbol table. |
2432 SymbolTable::unlink(); | 2432 SymbolTable::unlink(); |
2433 _gc_tracer.report_object_count_after_gc(is_alive_closure()); | 2433 _gc_tracer.report_object_count_after_gc(is_alive_closure()); |
2434 } | 2434 } |
2435 | 2435 |
2436 void PSParallelCompact::follow_klass(ParCompactionManager* cm, Klass* klass) { | |
2437 ClassLoaderData* cld = klass->class_loader_data(); | |
2438 // The actual processing of the klass is done when we | |
2439 // traverse the list of Klasses in the class loader data. | |
2440 PSParallelCompact::follow_class_loader(cm, cld); | |
2441 } | |
2442 | |
2443 void PSParallelCompact::adjust_klass(ParCompactionManager* cm, Klass* klass) { | |
2444 ClassLoaderData* cld = klass->class_loader_data(); | |
2445 // The actual processing of the klass is done when we | |
2446 // traverse the list of Klasses in the class loader data. | |
2447 PSParallelCompact::adjust_class_loader(cm, cld); | |
2448 } | |
2449 | |
2450 void PSParallelCompact::follow_class_loader(ParCompactionManager* cm, | 2436 void PSParallelCompact::follow_class_loader(ParCompactionManager* cm, |
2451 ClassLoaderData* cld) { | 2437 ClassLoaderData* cld) { |
2452 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); | 2438 PSParallelCompact::MarkAndPushClosure mark_and_push_closure(cm); |
2453 PSParallelCompact::FollowKlassClosure follow_klass_closure(&mark_and_push_closure); | 2439 PSParallelCompact::FollowKlassClosure follow_klass_closure(&mark_and_push_closure); |
2454 | 2440 |
2455 cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true); | 2441 cld->oops_do(&mark_and_push_closure, &follow_klass_closure, true); |
2456 } | |
2457 | |
2458 void PSParallelCompact::adjust_class_loader(ParCompactionManager* cm, | |
2459 ClassLoaderData* cld) { | |
2460 cld->oops_do(PSParallelCompact::adjust_pointer_closure(), | |
2461 PSParallelCompact::adjust_klass_closure(), | |
2462 true); | |
2463 } | 2442 } |
2464 | 2443 |
2465 // This should be moved to the shared markSweep code! | 2444 // This should be moved to the shared markSweep code! |
2466 class PSAlwaysTrueClosure: public BoolObjectClosure { | 2445 class PSAlwaysTrueClosure: public BoolObjectClosure { |
2467 public: | 2446 public: |