# HG changeset patch # User johnc # Date 1330713376 28800 # Node ID b5290bf0a9e45c87f5ce26a0002797e6343849bb # Parent 2d503de963b3307e76e920096ab793d1474c0f11 7147806: G1: Crash in vm bootstrap when running with -XX:+UseG1GC -XX:-UsePerfData Summary: Update generation and collector counters only if UsePerfData is enabled. Reviewed-by: iveresov, tonyp diff -r 2d503de963b3 -r b5290bf0a9e4 src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp --- a/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp Thu Feb 23 14:58:35 2012 +0100 +++ b/src/share/vm/gc_implementation/g1/g1MonitoringSupport.cpp Fri Mar 02 10:36:16 2012 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2012 Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -44,7 +44,9 @@ G1MonitoringSupport::pad_capacity(0, 3) /* min_capacity */, G1MonitoringSupport::pad_capacity(g1mm->young_gen_max(), 3), G1MonitoringSupport::pad_capacity(0, 3) /* curr_capacity */) { - update_all(); + if (UsePerfData) { + update_all(); + } } G1OldGenerationCounters::G1OldGenerationCounters(G1MonitoringSupport* g1mm, @@ -53,7 +55,9 @@ G1MonitoringSupport::pad_capacity(0) /* min_capacity */, G1MonitoringSupport::pad_capacity(g1mm->old_gen_max()), G1MonitoringSupport::pad_capacity(0) /* curr_capacity */) { - update_all(); + if (UsePerfData) { + update_all(); + } } void G1YoungGenerationCounters::update_all() { @@ -149,10 +153,6 @@ pad_capacity(0) /* max_capacity */, pad_capacity(0) /* init_capacity */, _young_collection_counters); - // Given that this survivor space is not used, we update it here - // once to reflect that its used space is 0 so that we don't have to - // worry about updating it again later. - _from_counters->update_used(0); // name "generation.0.space.2" // See _old_space_counters for additional counters @@ -160,6 +160,13 @@ pad_capacity(overall_reserved()) /* max_capacity */, pad_capacity(survivor_space_committed()) /* init_capacity */, _young_collection_counters); + + if (UsePerfData) { + // Given that this survivor space is not used, we update it here + // once to reflect that its used space is 0 so that we don't have to + // worry about updating it again later. + _from_counters->update_used(0); + } } void G1MonitoringSupport::recalculate_sizes() {