src/share/vm/ci/ciClassList.hpp

Mon, 12 Nov 2012 14:03:53 -0800

author
minqi
date
Mon, 12 Nov 2012 14:03:53 -0800
changeset 4267
bd7a7ce2e264
parent 4133
f6b0eb4e44cf
child 5914
d13d7aba8c12
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

duke@435 1 /*
coleenp@4037 2 * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
duke@435 22 *
duke@435 23 */
duke@435 24
stefank@2314 25 #ifndef SHARE_VM_CI_CICLASSLIST_HPP
stefank@2314 26 #define SHARE_VM_CI_CICLASSLIST_HPP
stefank@2314 27
duke@435 28 class ciEnv;
duke@435 29 class ciObjectFactory;
duke@435 30 class ciConstantPoolCache;
duke@435 31
duke@435 32 class ciField;
duke@435 33 class ciConstant;
duke@435 34 class ciFlags;
duke@435 35 class ciExceptionHandler;
duke@435 36 class ciCallProfile;
duke@435 37 class ciSignature;
duke@435 38
duke@435 39 class ciBytecodeStream;
duke@435 40 class ciSignatureStream;
duke@435 41 class ciExceptionHandlerStream;
duke@435 42
duke@435 43 class ciTypeFlow;
duke@435 44
coleenp@4037 45 class ciBaseObject;
duke@435 46 class ciObject;
duke@435 47 class ciNullObject;
duke@435 48 class ciInstance;
twisti@1573 49 class ciCallSite;
twisti@3969 50 class ciMemberName;
twisti@1573 51 class ciMethodHandle;
twisti@4133 52 class ciMethodType;
coleenp@4037 53 class ciArray;
coleenp@4037 54 class ciObjArray;
coleenp@4037 55 class ciTypeArray;
coleenp@4037 56 class ciSymbol;
coleenp@4037 57 class ciMetadata;
duke@435 58 class ciMethod;
duke@435 59 class ciMethodData;
duke@435 60 class ciReceiverTypeData; // part of ciMethodData
duke@435 61 class ciType;
duke@435 62 class ciReturnAddress;
duke@435 63 class ciKlass;
duke@435 64 class ciInstanceKlass;
duke@435 65 class ciArrayKlass;
duke@435 66 class ciObjArrayKlass;
duke@435 67 class ciTypeArrayKlass;
duke@435 68
duke@435 69 // Simulate Java Language style package-private access with
duke@435 70 // friend declarations.
duke@435 71 // This is a great idea but gcc and other C++ compilers give an
duke@435 72 // error for being friends with yourself, so this macro does not
duke@435 73 // compile on some platforms.
duke@435 74
duke@435 75 // Everyone gives access to ciObjectFactory
duke@435 76 #define CI_PACKAGE_ACCESS \
never@3138 77 friend class ciObjectFactory; \
never@3138 78 friend class VMStructs;
duke@435 79
duke@435 80 // These are the packages that have access to ciEnv
duke@435 81 // Any more access must be given explicitly.
duke@435 82 #define CI_PACKAGE_ACCESS_TO \
duke@435 83 friend class ciObjectFactory; \
never@3138 84 friend class VMStructs; \
twisti@1573 85 friend class ciCallSite; \
duke@435 86 friend class ciConstantPoolCache; \
duke@435 87 friend class ciField; \
duke@435 88 friend class ciConstant; \
duke@435 89 friend class ciFlags; \
duke@435 90 friend class ciExceptionHandler; \
duke@435 91 friend class ciCallProfile; \
duke@435 92 friend class ciSignature; \
duke@435 93 friend class ciBytecodeStream; \
duke@435 94 friend class ciSignatureStream; \
duke@435 95 friend class ciExceptionHandlerStream; \
duke@435 96 friend class ciObject; \
duke@435 97 friend class ciNullObject; \
duke@435 98 friend class ciInstance; \
twisti@3969 99 friend class ciMemberName; \
duke@435 100 friend class ciMethod; \
duke@435 101 friend class ciMethodData; \
twisti@1573 102 friend class ciMethodHandle; \
twisti@4133 103 friend class ciMethodType; \
duke@435 104 friend class ciReceiverTypeData; \
duke@435 105 friend class ciSymbol; \
duke@435 106 friend class ciArray; \
duke@435 107 friend class ciObjArray; \
coleenp@4037 108 friend class ciMetadata; \
minqi@4267 109 friend class ciReplay; \
duke@435 110 friend class ciTypeArray; \
duke@435 111 friend class ciType; \
duke@435 112 friend class ciReturnAddress; \
duke@435 113 friend class ciKlass; \
duke@435 114 friend class ciInstanceKlass; \
duke@435 115 friend class ciArrayKlass; \
duke@435 116 friend class ciObjArrayKlass; \
duke@435 117 friend class ciTypeArrayKlass; \
stefank@2314 118
stefank@2314 119 #endif // SHARE_VM_CI_CICLASSLIST_HPP

mercurial