hotspot/src/share/vm/gc_implementation/g1/g1Log.cpp
author johnc
Thu, 09 May 2013 11:16:39 -0700
changeset 17327 4bd0581aa231
parent 12378 ed44b9ecfa2f
child 30574 c38efb747c8a
permissions -rw-r--r--
7176479: G1: JVM crashes on T5-8 system with 1.5 TB heap Summary: Refactor G1's hot card cache and card counts table into their own files. Simplify the card counts table, including removing the encoding of the card index in each entry. The card counts table now has a 1:1 correspondence with the cards spanned by heap. Space for the card counts table is reserved from virtual memory (rather than C heap) during JVM startup and is committed/expanded when the heap is expanded. Changes were also reviewed-by Vitaly Davidovich. Reviewed-by: tschatzl, jmasa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
12378
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     1
/*
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     2
 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     4
 *
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     7
 * published by the Free Software Foundation.
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     8
 *
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    13
 * accompanied this code).
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    14
 *
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    18
 *
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    21
 * questions.
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    22
 *
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    23
 */
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    24
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    25
#include "precompiled.hpp"
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    26
#include "gc_implementation/g1/g1_globals.hpp"
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    27
#include "gc_implementation/g1/g1Log.hpp"
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    28
#include "runtime/globals.hpp"
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    29
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    30
G1Log::LogLevel G1Log::_level = G1Log::LevelNone;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    31
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    32
// If G1LogLevel has not been set up we will use the values of PrintGC
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    33
// and PrintGCDetails for the logging level.
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    34
// - PrintGC maps to "fine".
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    35
// - PrintGCDetails maps to "finer".
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    36
void G1Log::init() {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    37
  if (G1LogLevel != NULL && G1LogLevel[0] != '\0') {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    38
    if (strncmp("none", G1LogLevel, 4) == 0 && G1LogLevel[4] == '\0') {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    39
      _level = LevelNone;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    40
    } else if (strncmp("fine", G1LogLevel, 4) == 0 && G1LogLevel[4] == '\0') {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    41
      _level = LevelFine;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    42
    } else if (strncmp("finer", G1LogLevel, 5) == 0 && G1LogLevel[5] == '\0') {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    43
      _level = LevelFiner;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    44
    } else if (strncmp("finest", G1LogLevel, 6) == 0 && G1LogLevel[6] == '\0') {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    45
      _level = LevelFinest;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    46
    } else {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    47
      warning("Unknown logging level '%s', should be one of 'fine', 'finer' or 'finest'.", G1LogLevel);
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    48
    }
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    49
  } else {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    50
    if (PrintGCDetails) {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    51
      _level = LevelFiner;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    52
    } else if (PrintGC) {
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    53
      _level = LevelFine;
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    54
    }
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    55
  }
ed44b9ecfa2f 7160728: Introduce an extra logging level for G1 logging
brutisso
parents:
diff changeset
    56
}