Mercurial > hg > truffle
comparison src/share/vm/gc_implementation/parallelScavenge/psScavenge.cpp @ 20804:7848fc12602b
Merge with jdk8u40-b25
author | Gilles Duboscq <gilles.m.duboscq@oracle.com> |
---|---|
date | Tue, 07 Apr 2015 14:58:49 +0200 |
parents | 52b4284cb496 0982ec23da03 |
children |
comparison
equal
deleted
inserted
replaced
20184:84105dcdb05b | 20804:7848fc12602b |
---|---|
329 ResourceMark rm; | 329 ResourceMark rm; |
330 HandleMark hm; | 330 HandleMark hm; |
331 | 331 |
332 gclog_or_tty->date_stamp(PrintGC && PrintGCDateStamps); | 332 gclog_or_tty->date_stamp(PrintGC && PrintGCDateStamps); |
333 TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty); | 333 TraceCPUTime tcpu(PrintGCDetails, true, gclog_or_tty); |
334 GCTraceTime t1(GCCauseString("GC", gc_cause), PrintGC, !PrintGCDetails, NULL); | 334 GCTraceTime t1(GCCauseString("GC", gc_cause), PrintGC, !PrintGCDetails, NULL, _gc_tracer.gc_id()); |
335 TraceCollectorStats tcs(counters()); | 335 TraceCollectorStats tcs(counters()); |
336 TraceMemoryManagerStats tms(false /* not full GC */,gc_cause); | 336 TraceMemoryManagerStats tms(false /* not full GC */,gc_cause); |
337 | 337 |
338 if (TraceGen0Time) accumulated_time()->start(); | 338 if (TraceGen0Time) accumulated_time()->start(); |
339 | 339 |
395 PSPromotionManager::pre_scavenge(); | 395 PSPromotionManager::pre_scavenge(); |
396 | 396 |
397 // We'll use the promotion manager again later. | 397 // We'll use the promotion manager again later. |
398 PSPromotionManager* promotion_manager = PSPromotionManager::vm_thread_promotion_manager(); | 398 PSPromotionManager* promotion_manager = PSPromotionManager::vm_thread_promotion_manager(); |
399 { | 399 { |
400 GCTraceTime tm("Scavenge", false, false, &_gc_timer); | 400 GCTraceTime tm("Scavenge", false, false, &_gc_timer, _gc_tracer.gc_id()); |
401 ParallelScavengeHeap::ParStrongRootsScope psrs; | 401 ParallelScavengeHeap::ParStrongRootsScope psrs; |
402 | 402 |
403 GCTaskQueue* q = GCTaskQueue::create(); | 403 GCTaskQueue* q = GCTaskQueue::create(); |
404 | 404 |
405 if (!old_gen->object_space()->is_empty()) { | 405 if (!old_gen->object_space()->is_empty()) { |
437 | 437 |
438 scavenge_midpoint.update(); | 438 scavenge_midpoint.update(); |
439 | 439 |
440 // Process reference objects discovered during scavenge | 440 // Process reference objects discovered during scavenge |
441 { | 441 { |
442 GCTraceTime tm("References", false, false, &_gc_timer); | 442 GCTraceTime tm("References", false, false, &_gc_timer, _gc_tracer.gc_id()); |
443 | 443 |
444 reference_processor()->setup_policy(false); // not always_clear | 444 reference_processor()->setup_policy(false); // not always_clear |
445 reference_processor()->set_active_mt_degree(active_workers); | 445 reference_processor()->set_active_mt_degree(active_workers); |
446 PSKeepAliveClosure keep_alive(promotion_manager); | 446 PSKeepAliveClosure keep_alive(promotion_manager); |
447 PSEvacuateFollowersClosure evac_followers(promotion_manager); | 447 PSEvacuateFollowersClosure evac_followers(promotion_manager); |
448 ReferenceProcessorStats stats; | 448 ReferenceProcessorStats stats; |
449 if (reference_processor()->processing_is_mt()) { | 449 if (reference_processor()->processing_is_mt()) { |
450 PSRefProcTaskExecutor task_executor; | 450 PSRefProcTaskExecutor task_executor; |
451 stats = reference_processor()->process_discovered_references( | 451 stats = reference_processor()->process_discovered_references( |
452 &_is_alive_closure, &keep_alive, &evac_followers, &task_executor, | 452 &_is_alive_closure, &keep_alive, &evac_followers, &task_executor, |
453 &_gc_timer); | 453 &_gc_timer, _gc_tracer.gc_id()); |
454 } else { | 454 } else { |
455 stats = reference_processor()->process_discovered_references( | 455 stats = reference_processor()->process_discovered_references( |
456 &_is_alive_closure, &keep_alive, &evac_followers, NULL, &_gc_timer); | 456 &_is_alive_closure, &keep_alive, &evac_followers, NULL, &_gc_timer, _gc_tracer.gc_id()); |
457 } | 457 } |
458 | 458 |
459 _gc_tracer.report_gc_reference_stats(stats); | 459 _gc_tracer.report_gc_reference_stats(stats); |
460 | 460 |
461 // Enqueue reference objects discovered during scavenge. | 461 // Enqueue reference objects discovered during scavenge. |
466 reference_processor()->enqueue_discovered_references(NULL); | 466 reference_processor()->enqueue_discovered_references(NULL); |
467 } | 467 } |
468 } | 468 } |
469 | 469 |
470 { | 470 { |
471 GCTraceTime tm("StringTable", false, false, &_gc_timer); | 471 GCTraceTime tm("StringTable", false, false, &_gc_timer, _gc_tracer.gc_id()); |
472 // Unlink any dead interned Strings and process the remaining live ones. | 472 // Unlink any dead interned Strings and process the remaining live ones. |
473 PSScavengeRootsClosure root_closure(promotion_manager); | 473 PSScavengeRootsClosure root_closure(promotion_manager); |
474 StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure); | 474 StringTable::unlink_or_oops_do(&_is_alive_closure, &root_closure); |
475 } | 475 } |
476 | 476 |
636 COMPILER2_PRESENT(DerivedPointerTable::update_pointers()); | 636 COMPILER2_PRESENT(DerivedPointerTable::update_pointers()); |
637 | 637 |
638 NOT_PRODUCT(reference_processor()->verify_no_references_recorded()); | 638 NOT_PRODUCT(reference_processor()->verify_no_references_recorded()); |
639 | 639 |
640 { | 640 { |
641 GCTraceTime tm("Prune Scavenge Root Methods", false, false, &_gc_timer); | 641 GCTraceTime tm("Prune Scavenge Root Methods", false, false, &_gc_timer, _gc_tracer.gc_id()); |
642 | 642 |
643 CodeCache::prune_scavenge_root_nmethods(); | 643 CodeCache::prune_scavenge_root_nmethods(); |
644 } | 644 } |
645 | 645 |
646 // Re-verify object start arrays | 646 // Re-verify object start arrays |