hotspot/src/share/vm/ci/ciReplay.hpp
author minqi
Mon, 12 Nov 2012 14:03:53 -0800
changeset 14477 95e66ea71f71
child 14588 8ec26d2d9339
permissions -rw-r--r--
6830717: replay of compilations would help with debugging Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method. Reviewed-by: kvn, twisti, sspitsyn Contributed-by: yumin.qi@oracle.com
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14477
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     1
/*
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     2
 * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     4
 *
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     7
 * published by the Free Software Foundation.
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     8
 *
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    13
 * accompanied this code).
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    14
 *
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    18
 *
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    21
 * questions.
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    22
 *
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    23
 */
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    24
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    25
#ifndef SHARE_VM_CI_CIREPLAY_HPP
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    26
#define SHARE_VM_CI_CIREPLAY_HPP
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    27
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    28
#include "ci/ciMethod.hpp"
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    29
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    30
// ciReplay
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    31
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    32
class ciReplay {
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    33
  CI_PACKAGE_ACCESS
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    34
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    35
#ifdef ASSERT
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    36
 private:
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    37
  static int replay_impl(TRAPS);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    38
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    39
 public:
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    40
  static void replay(TRAPS);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    41
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    42
  // These are used by the CI to fill in the cached data from the
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    43
  // replay file when replaying compiles.
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    44
  static void initialize(ciMethodData* method);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    45
  static void initialize(ciMethod* method);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    46
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    47
  static bool is_loaded(Method* method);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    48
  static bool is_loaded(Klass* klass);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    49
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    50
  static bool should_not_inline(ciMethod* method);
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    51
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    52
#endif
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    53
};
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    54
95e66ea71f71 6830717: replay of compilations would help with debugging
minqi
parents:
diff changeset
    55
#endif // SHARE_VM_CI_CIREPLAY_HPP