annotate agent/src/share/classes/sun/jvm/hotspot/ci/ciEnv.java @ 14909:4ca6dc0799b6

Backout jdk9 merge
author Gilles Duboscq <duboscq@ssw.jku.at>
date Tue, 01 Apr 2014 13:57:07 +0200
parents 183bd5c00828
children 89152779163c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3939
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
1 /*
14909
4ca6dc0799b6 Backout jdk9 merge
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 14232
diff changeset
2 * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
3939
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
4 *
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
7 * published by the Free Software Foundation.
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
8 *
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
13 * accompanied this code).
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
14 *
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
18 *
6972
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
21 * questions.
3939
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
22 *
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
23 */
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
24
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
25 package sun.jvm.hotspot.ci;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
26
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
27 import java.io.PrintStream;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
28 import java.util.*;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
29 import sun.jvm.hotspot.debugger.*;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
30 import sun.jvm.hotspot.runtime.*;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
31 import sun.jvm.hotspot.oops.*;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
32 import sun.jvm.hotspot.opto.*;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
33 import sun.jvm.hotspot.compiler.CompileTask;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
34 import sun.jvm.hotspot.prims.JvmtiExport;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
35 import sun.jvm.hotspot.types.*;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
36 import sun.jvm.hotspot.utilities.GrowableArray;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
37
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
38 public class ciEnv extends VMObject {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
39 static {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
40 VM.registerVMInitializedObserver(new Observer() {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
41 public void update(Observable o, Object data) {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
42 initialize(VM.getVM().getTypeDataBase());
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
43 }
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
44 });
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
45 }
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
46
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
47 private static synchronized void initialize(TypeDataBase db) throws WrongTypeException {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
48 Type type = db.lookupType("ciEnv");
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
49 dependenciesField = type.getAddressField("_dependencies");
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
50 factoryField = type.getAddressField("_factory");
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
51 compilerDataField = type.getAddressField("_compiler_data");
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
52 taskField = type.getAddressField("_task");
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
53 systemDictionaryModificationCounterField = new CIntField(type.getCIntegerField("_system_dictionary_modification_counter"), 0);
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
54 }
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
55
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
56 private static AddressField dependenciesField;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
57 private static AddressField factoryField;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
58 private static AddressField compilerDataField;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
59 private static AddressField taskField;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
60 private static CIntField systemDictionaryModificationCounterField;
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
61
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
62 public ciEnv(Address addr) {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
63 super(addr);
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
64 }
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
65
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
66 public Compile compilerData() {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
67 return new Compile(compilerDataField.getValue(this.getAddress()));
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
68 }
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
69
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
70 public ciObjectFactory factory() {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
71 return new ciObjectFactory(factoryField.getValue(this.getAddress()));
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
72 }
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
73
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
74 public CompileTask task() {
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
75 return new CompileTask(taskField.getValue(this.getAddress()));
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
76 }
6972
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
77
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
78 public void dumpReplayData(PrintStream out) {
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
79 out.println("JvmtiExport can_access_local_variables " +
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
80 (JvmtiExport.canAccessLocalVariables() ? '1' : '0'));
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
81 out.println("JvmtiExport can_hotswap_or_post_breakpoint " +
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
82 (JvmtiExport.canHotswapOrPostBreakpoint() ? '1' : '0'));
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
83 out.println("JvmtiExport can_post_on_exceptions " +
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
84 (JvmtiExport.canPostOnExceptions() ? '1' : '0'));
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
85
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
86 GrowableArray<ciMetadata> objects = factory().objects();
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
87 out.println("# " + objects.length() + " ciObject found");
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
88 for (int i = 0; i < objects.length(); i++) {
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
89 ciMetadata o = objects.at(i);
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
90 out.println("# ciMetadata" + i + " @ " + o);
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
91 o.dumpReplayData(out);
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
92 }
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
93 CompileTask task = task();
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
94 Method method = task.method();
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
95 int entryBci = task.osrBci();
10197
7b23cb975cf2 8011675: adding compilation level to replay data
iignatyev
parents: 6972
diff changeset
96 int compLevel = task.compLevel();
6972
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
97 Klass holder = method.getMethodHolder();
14909
4ca6dc0799b6 Backout jdk9 merge
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 14232
diff changeset
98 out.println("compile " + holder.getName().asString() + " " +
4ca6dc0799b6 Backout jdk9 merge
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 14232
diff changeset
99 OopUtilities.escapeString(method.getName().asString()) + " " +
4ca6dc0799b6 Backout jdk9 merge
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 14232
diff changeset
100 method.getSignature().asString() + " " +
4ca6dc0799b6 Backout jdk9 merge
Gilles Duboscq <duboscq@ssw.jku.at>
parents: 14232
diff changeset
101 entryBci + " " + compLevel);
6972
bd7a7ce2e264 6830717: replay of compilations would help with debugging
minqi
parents: 3939
diff changeset
102 }
3939
f6f3bb0ee072 7088955: add C2 IR support to the SA
never
parents:
diff changeset
103 }