annotate graal/com.oracle.graal.hotspot.jfr/src/com/oracle/graal/hotspot/jfr/events/JFREventProvider.java @ 18408:2c3666f44855

Truffle: initial commit of object API implementation
author Andreas Woess <andreas.woess@jku.at>
date Tue, 18 Nov 2014 23:19:43 +0100
parents c88ab4f1f04a
children c1e2fdb5fea3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15663
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
1 /*
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
2 * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
4 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
5 * This code is free software; you can redistribute it and/or modify it
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
6 * under the terms of the GNU General Public License version 2 only, as
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
7 * published by the Free Software Foundation.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
8 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
9 * This code is distributed in the hope that it will be useful, but WITHOUT
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
12 * version 2 for more details (a copy is included in the LICENSE file that
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
13 * accompanied this code).
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
14 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
15 * You should have received a copy of the GNU General Public License version
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
16 * 2 along with this work; if not, write to the Free Software Foundation,
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
18 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
20 * or visit www.oracle.com if you need additional information or have any
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
21 * questions.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
22 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
23 package com.oracle.graal.hotspot.jfr.events;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
24
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
25 import java.net.*;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
26
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
27 import com.oracle.graal.api.runtime.*;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
28 import com.oracle.graal.hotspot.events.*;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
29 import com.oracle.jrockit.jfr.*;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
30
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
31 /**
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
32 * A JFR implementation for {@link EventProvider}. This implementation is used when Flight Recorder
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
33 * is turned on.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
34 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
35 @ServiceProvider(EventProvider.class)
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
36 public final class JFREventProvider implements EventProvider {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
37
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
38 @SuppressWarnings("deprecation") private final Producer producer;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
39
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
40 @SuppressWarnings("deprecation")
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
41 public JFREventProvider() {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
42 try {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
43 /*
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
44 * The "HotSpot JVM" producer is a native producer and we cannot use it. So we create
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
45 * our own. This has the downside that Mission Control is confused and doesn't show
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
46 * Graal's events in the "Code" tab. There are plans to revise the JFR code for JDK 9.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
47 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
48 producer = new Producer("HotSpot JVM", "Oracle Hotspot JVM", "http://www.oracle.com/hotspot/jvm/");
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
49 producer.register();
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
50 } catch (URISyntaxException e) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
51 throw new InternalError(e);
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
52 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
53
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
54 // Register event classes with Producer.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
55 for (Class<?> c : JFREventProvider.class.getDeclaredClasses()) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
56 if (c.isAnnotationPresent(EventDefinition.class)) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
57 assert com.oracle.jrockit.jfr.InstantEvent.class.isAssignableFrom(c) : c;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
58 registerEvent(c);
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
59 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
60 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
61 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
62
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
63 /**
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
64 * Register an event class with the {@link Producer}.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
65 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
66 * @param c event class
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
67 * @return the {@link EventToken event token}
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
68 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
69 @SuppressWarnings({"deprecation", "javadoc", "unchecked"})
18163
c88ab4f1f04a re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents: 15663
diff changeset
70 private EventToken registerEvent(Class<?> c) {
15663
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
71 try {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
72 return producer.addEvent((Class<? extends com.oracle.jrockit.jfr.InstantEvent>) c);
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
73 } catch (InvalidEventDefinitionException | InvalidValueException e) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
74 throw new InternalError(e);
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
75 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
76 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
77
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
78 public CompilationEvent newCompilationEvent() {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
79 return new JFRCompilationEvent();
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
80 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
81
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
82 /**
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
83 * A JFR compilation event.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
84 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
85 * <p>
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
86 * See: event {@code Compilation} in {@code src/share/vm/trace/trace.xml}
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
87 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
88 @SuppressWarnings("deprecation")
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
89 @EventDefinition(name = "Compilation", path = "vm/compiler/compilation")
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
90 public static class JFRCompilationEvent extends com.oracle.jrockit.jfr.DurationEvent implements CompilationEvent {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
91
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
92 /*
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
93 * FIXME method should be a Method* but we can't express that in Java.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
94 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
95 @ValueDefinition(name = "Java Method") public String method;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
96 @ValueDefinition(name = "Compilation ID", relationKey = "COMP_ID") public int compileId;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
97 @ValueDefinition(name = "Compilation Level") public short compileLevel;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
98 @ValueDefinition(name = "Succeeded") public boolean succeeded;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
99 @ValueDefinition(name = "On Stack Replacement") public boolean isOsr;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
100 @ValueDefinition(name = "Compiled Code Size", contentType = ContentType.Bytes) public int codeSize;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
101 @ValueDefinition(name = "Inlined Code Size", contentType = ContentType.Bytes) public int inlinedBytes;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
102
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
103 public void setMethod(String method) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
104 this.method = method;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
105 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
106
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
107 public void setCompileId(int id) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
108 this.compileId = id;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
109 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
110
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
111 public void setCompileLevel(int compileLevel) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
112 this.compileLevel = (short) compileLevel;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
113 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
114
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
115 public void setSucceeded(boolean succeeded) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
116 this.succeeded = succeeded;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
117 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
118
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
119 public void setIsOsr(boolean isOsr) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
120 this.isOsr = isOsr;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
121 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
122
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
123 public void setCodeSize(int codeSize) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
124 this.codeSize = codeSize;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
125 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
126
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
127 public void setInlinedBytes(int inlinedBytes) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
128 this.inlinedBytes = inlinedBytes;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
129 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
130 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
131
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
132 public CompilerFailureEvent newCompilerFailureEvent() {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
133 return new JFRCompilerFailureEvent();
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
134 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
135
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
136 /**
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
137 * A JFR compiler failure event.
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
138 *
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
139 * <p>
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
140 * See: event {@code CompilerFailure} in {@code src/share/vm/trace/trace.xml}
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
141 */
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
142 @SuppressWarnings("deprecation")
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
143 @EventDefinition(name = "Compilation Failure", path = "vm/compiler/failure")
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
144 public static class JFRCompilerFailureEvent extends com.oracle.jrockit.jfr.InstantEvent implements CompilerFailureEvent {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
145
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
146 @ValueDefinition(name = "Compilation ID", relationKey = "COMP_ID") public int compileId;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
147 @ValueDefinition(name = "Message", description = "The failure message") public String failure;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
148
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
149 public void setCompileId(int id) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
150 this.compileId = id;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
151 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
152
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
153 public void setMessage(String message) {
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
154 this.failure = message;
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
155 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
156 }
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
157
7340fe377764 added Java Flight Recorder (JFR) event support
twisti
parents:
diff changeset
158 }