Mercurial > hg > graal-compiler
comparison src/share/vm/gc_implementation/parallelScavenge/parallelScavengeHeap.cpp @ 10405:f2110083203d
8005849: JEP 167: Event-Based JVM Tracing
Reviewed-by: acorn, coleenp, sla
Contributed-by: Karen Kinnear <karen.kinnear@oracle.com>, Bengt Rutisson <bengt.rutisson@oracle.com>, Calvin Cheung <calvin.cheung@oracle.com>, Erik Gahlin <erik.gahlin@oracle.com>, Erik Helin <erik.helin@oracle.com>, Jesper Wilhelmsson <jesper.wilhelmsson@oracle.com>, Keith McGuigan <keith.mcguigan@oracle.com>, Mattias Tobiasson <mattias.tobiasson@oracle.com>, Markus Gronlund <markus.gronlund@oracle.com>, Mikael Auno <mikael.auno@oracle.com>, Nils Eliasson <nils.eliasson@oracle.com>, Nils Loodin <nils.loodin@oracle.com>, Rickard Backman <rickard.backman@oracle.com>, Staffan Larsen <staffan.larsen@oracle.com>, Stefan Karlsson <stefan.karlsson@oracle.com>, Yekaterina Kantserova <yekaterina.kantserova@oracle.com>
author | sla |
---|---|
date | Mon, 10 Jun 2013 11:30:51 +0200 |
parents | 7b835924c31c |
children | 1a8fb39bdbc4 |
comparison
equal
deleted
inserted
replaced
10404:d0add7016434 | 10405:f2110083203d |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2001, 2013, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
33 #include "gc_implementation/parallelScavenge/psMarkSweep.hpp" | 33 #include "gc_implementation/parallelScavenge/psMarkSweep.hpp" |
34 #include "gc_implementation/parallelScavenge/psParallelCompact.hpp" | 34 #include "gc_implementation/parallelScavenge/psParallelCompact.hpp" |
35 #include "gc_implementation/parallelScavenge/psPromotionManager.hpp" | 35 #include "gc_implementation/parallelScavenge/psPromotionManager.hpp" |
36 #include "gc_implementation/parallelScavenge/psScavenge.hpp" | 36 #include "gc_implementation/parallelScavenge/psScavenge.hpp" |
37 #include "gc_implementation/parallelScavenge/vmPSOperations.hpp" | 37 #include "gc_implementation/parallelScavenge/vmPSOperations.hpp" |
38 #include "gc_implementation/shared/gcHeapSummary.hpp" | |
39 #include "gc_implementation/shared/gcWhen.hpp" | |
38 #include "memory/gcLocker.inline.hpp" | 40 #include "memory/gcLocker.inline.hpp" |
39 #include "oops/oop.inline.hpp" | 41 #include "oops/oop.inline.hpp" |
40 #include "runtime/handles.inline.hpp" | 42 #include "runtime/handles.inline.hpp" |
41 #include "runtime/java.hpp" | 43 #include "runtime/java.hpp" |
42 #include "runtime/vmThread.hpp" | 44 #include "runtime/vmThread.hpp" |
640 | 642 |
641 void ParallelScavengeHeap::prepare_for_verify() { | 643 void ParallelScavengeHeap::prepare_for_verify() { |
642 ensure_parsability(false); // no need to retire TLABs for verification | 644 ensure_parsability(false); // no need to retire TLABs for verification |
643 } | 645 } |
644 | 646 |
647 PSHeapSummary ParallelScavengeHeap::create_ps_heap_summary() { | |
648 PSOldGen* old = old_gen(); | |
649 HeapWord* old_committed_end = (HeapWord*)old->virtual_space()->committed_high_addr(); | |
650 VirtualSpaceSummary old_summary(old->reserved().start(), old_committed_end, old->reserved().end()); | |
651 SpaceSummary old_space(old->reserved().start(), old_committed_end, old->used_in_bytes()); | |
652 | |
653 PSYoungGen* young = young_gen(); | |
654 VirtualSpaceSummary young_summary(young->reserved().start(), | |
655 (HeapWord*)young->virtual_space()->committed_high_addr(), young->reserved().end()); | |
656 | |
657 MutableSpace* eden = young_gen()->eden_space(); | |
658 SpaceSummary eden_space(eden->bottom(), eden->end(), eden->used_in_bytes()); | |
659 | |
660 MutableSpace* from = young_gen()->from_space(); | |
661 SpaceSummary from_space(from->bottom(), from->end(), from->used_in_bytes()); | |
662 | |
663 MutableSpace* to = young_gen()->to_space(); | |
664 SpaceSummary to_space(to->bottom(), to->end(), to->used_in_bytes()); | |
665 | |
666 VirtualSpaceSummary heap_summary = create_heap_space_summary(); | |
667 return PSHeapSummary(heap_summary, used(), old_summary, old_space, young_summary, eden_space, from_space, to_space); | |
668 } | |
669 | |
645 void ParallelScavengeHeap::print_on(outputStream* st) const { | 670 void ParallelScavengeHeap::print_on(outputStream* st) const { |
646 young_gen()->print_on(st); | 671 young_gen()->print_on(st); |
647 old_gen()->print_on(st); | 672 old_gen()->print_on(st); |
648 MetaspaceAux::print_on(st); | 673 MetaspaceAux::print_on(st); |
649 } | 674 } |
704 "(" SIZE_FORMAT "K)", | 729 "(" SIZE_FORMAT "K)", |
705 prev_used / K, used() / K, capacity() / K); | 730 prev_used / K, used() / K, capacity() / K); |
706 } | 731 } |
707 } | 732 } |
708 | 733 |
734 void ParallelScavengeHeap::trace_heap(GCWhen::Type when, GCTracer* gc_tracer) { | |
735 const PSHeapSummary& heap_summary = create_ps_heap_summary(); | |
736 const MetaspaceSummary& metaspace_summary = create_metaspace_summary(); | |
737 gc_tracer->report_gc_heap_summary(when, heap_summary, metaspace_summary); | |
738 } | |
739 | |
709 ParallelScavengeHeap* ParallelScavengeHeap::heap() { | 740 ParallelScavengeHeap* ParallelScavengeHeap::heap() { |
710 assert(_psh != NULL, "Uninitialized access to ParallelScavengeHeap::heap()"); | 741 assert(_psh != NULL, "Uninitialized access to ParallelScavengeHeap::heap()"); |
711 assert(_psh->kind() == CollectedHeap::ParallelScavengeHeap, "not a parallel scavenge heap"); | 742 assert(_psh->kind() == CollectedHeap::ParallelScavengeHeap, "not a parallel scavenge heap"); |
712 return _psh; | 743 return _psh; |
713 } | 744 } |