Mercurial > hg > truffle
annotate graal/com.oracle.graal.truffle/src/com/oracle/graal/truffle/GraalTruffleRuntime.java @ 21543:93c50cefb9e8
moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Mon, 25 May 2015 23:30:34 +0200 |
parents | 706ffad4d773 |
children | b1530a6cce8c |
rev | line source |
---|---|
10484
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
1 /* |
18208
abe9758da9d9
Truffle: add headers for new compilation listener files.
Christian Humer <christian.humer@gmail.com>
parents:
18207
diff
changeset
|
2 * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. |
10484
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
4 * |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
8 * |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
14 * |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
18 * |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
21 * questions. |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
22 */ |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
23 package com.oracle.graal.truffle; |
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
24 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
25 import static com.oracle.graal.truffle.TruffleCompilerOptions.*; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
26 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
27 import java.util.*; |
17005
112ab4a3de3a
Truffle: added Graal runtime API to wait for the completion of a compilation.
Christian Humer <christian.humer@gmail.com>
parents:
15222
diff
changeset
|
28 import java.util.concurrent.*; |
112ab4a3de3a
Truffle: added Graal runtime API to wait for the completion of a compilation.
Christian Humer <christian.humer@gmail.com>
parents:
15222
diff
changeset
|
29 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
30 import com.oracle.graal.api.code.*; |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
31 import com.oracle.graal.api.code.stack.*; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
32 import com.oracle.graal.api.meta.*; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
33 import com.oracle.graal.api.runtime.*; |
21394
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
34 import com.oracle.graal.debug.*; |
21543
93c50cefb9e8
moved GraalInternalError to com.oracle.jvmci.common and renamed it to JVMCIError (JBS:GRAAL-53)
Doug Simon <doug.simon@oracle.com>
parents:
21394
diff
changeset
|
35 import com.oracle.graal.debug.Debug.Scope; |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
36 import com.oracle.graal.nodes.*; |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
37 import com.oracle.graal.truffle.debug.*; |
19309
c386ace07981
Truffle: move unsafe access methods out of CompilerDirectives
Andreas Woess <andreas.woess@oracle.com>
parents:
18961
diff
changeset
|
38 import com.oracle.graal.truffle.unsafe.*; |
10484
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
39 import com.oracle.truffle.api.*; |
18130
b4e38f4ca414
Truffle: rename @SlowPath to @TruffleBoundary.
Christian Humer <christian.humer@gmail.com>
parents:
17192
diff
changeset
|
40 import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary; |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
41 import com.oracle.truffle.api.frame.*; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
42 import com.oracle.truffle.api.nodes.*; |
19309
c386ace07981
Truffle: move unsafe access methods out of CompilerDirectives
Andreas Woess <andreas.woess@oracle.com>
parents:
18961
diff
changeset
|
43 import com.oracle.truffle.api.unsafe.*; |
10484
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
44 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
45 public abstract class GraalTruffleRuntime implements TruffleRuntime { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
46 |
18961
afa70d3e8159
Allow users to provide their own TruffleRuntime implementation
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18386
diff
changeset
|
47 public static TruffleRuntime alternateRuntime; |
afa70d3e8159
Allow users to provide their own TruffleRuntime implementation
Paul Woegerer <paul.woegerer@oracle.com>
parents:
18386
diff
changeset
|
48 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
49 private ArrayList<String> includes; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
50 private ArrayList<String> excludes; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
51 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
52 private StackIntrospection stackIntrospection; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
53 protected ResolvedJavaMethod[] callNodeMethod; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
54 protected ResolvedJavaMethod[] callTargetMethod; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
55 protected ResolvedJavaMethod[] anyFrameMethod; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
56 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
57 private final List<GraalTruffleCompilationListener> compilationListeners = new ArrayList<>(); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
58 private final GraalTruffleCompilationListener compilationNotify = new DispatchTruffleCompilationListener(); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
59 |
21394
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
60 protected TruffleCompiler truffleCompiler; |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
61 protected LoopNodeFactory loopNodeFactory; |
19976
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
62 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
63 public GraalTruffleRuntime() { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
64 Runtime.getRuntime().addShutdownHook(new Thread(this::shutdown)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
65 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
66 |
19976
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
67 private static <T extends PrioritizedServiceProvider> T loadPrioritizedServiceProvider(Class<T> clazz) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
68 ServiceLoader<T> serviceLoader = ServiceLoader.load(clazz, GraalTruffleRuntime.class.getClassLoader()); |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
69 T bestFactory = null; |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
70 for (T factory : serviceLoader) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
71 if (bestFactory == null) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
72 bestFactory = factory; |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
73 } else if (factory.getPriority() > bestFactory.getPriority()) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
74 bestFactory = factory; |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
75 } |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
76 } |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
77 if (bestFactory == null) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
78 throw new IllegalStateException("Unable to load a factory for " + clazz.getName()); |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
79 } |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
80 return bestFactory; |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
81 } |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
82 |
18200
62de94d5cf73
Truffle: refactor implementation of TraceTruffleCompilation, TraceTruffleCompilationDetails into separate classes.
Christian Humer <christian.humer@gmail.com>
parents:
18199
diff
changeset
|
83 protected void installDefaultListeners() { |
62de94d5cf73
Truffle: refactor implementation of TraceTruffleCompilation, TraceTruffleCompilationDetails into separate classes.
Christian Humer <christian.humer@gmail.com>
parents:
18199
diff
changeset
|
84 TraceCompilationFailureListener.install(this); |
62de94d5cf73
Truffle: refactor implementation of TraceTruffleCompilation, TraceTruffleCompilationDetails into separate classes.
Christian Humer <christian.humer@gmail.com>
parents:
18199
diff
changeset
|
85 TraceCompilationListener.install(this); |
62de94d5cf73
Truffle: refactor implementation of TraceTruffleCompilation, TraceTruffleCompilationDetails into separate classes.
Christian Humer <christian.humer@gmail.com>
parents:
18199
diff
changeset
|
86 TraceCompilationPolymorphismListener.install(this); |
18203
b1607c3ebe4f
Truffle: refactor TraceTruffleCompilationCallTree into a separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18202
diff
changeset
|
87 TraceCompilationCallTreeListener.install(this); |
18204
a1873eefea65
Truffle: refactor TraceTrufflePerformanceWarnings into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18203
diff
changeset
|
88 TracePerformanceWarningsListener.install(this); |
18202
b3f6b210f723
Truffle: refactor TraceTruffleInlining into a separte class.
Christian Humer <christian.humer@gmail.com>
parents:
18201
diff
changeset
|
89 TraceInliningListener.install(this); |
18207
881aa0ed3904
Truffle: refactor TraceTruffleSplitting into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18204
diff
changeset
|
90 TraceSplittingListener.install(this); |
18201
ae3b7695f0fb
Truffle: refactor TruffleCallTargetProfiling into a separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18200
diff
changeset
|
91 PrintCallTargetProfiling.install(this); |
18213
c489edfac1c7
Truffle: implemented new flag -G:+TruffleCompilationStatistics
Christian Humer <christian.humer@gmail.com>
parents:
18212
diff
changeset
|
92 CompilationStatisticsListener.install(this); |
18270
1d430dfce76d
Truffle: added notifyStartup event to GraalTruffleCompilationListener.
Christian Humer <christian.humer@gmail.com>
parents:
18220
diff
changeset
|
93 compilationNotify.notifyStartup(this); |
18200
62de94d5cf73
Truffle: refactor implementation of TraceTruffleCompilation, TraceTruffleCompilationDetails into separate classes.
Christian Humer <christian.humer@gmail.com>
parents:
18199
diff
changeset
|
94 } |
62de94d5cf73
Truffle: refactor implementation of TraceTruffleCompilation, TraceTruffleCompilationDetails into separate classes.
Christian Humer <christian.humer@gmail.com>
parents:
18199
diff
changeset
|
95 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
96 protected void lookupCallMethods(MetaAccessProvider metaAccess) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
97 callNodeMethod = new ResolvedJavaMethod[]{metaAccess.lookupJavaMethod(GraalFrameInstance.CallNodeFrame.METHOD)}; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
98 callTargetMethod = new ResolvedJavaMethod[]{metaAccess.lookupJavaMethod(GraalFrameInstance.CallTargetFrame.METHOD)}; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
99 anyFrameMethod = new ResolvedJavaMethod[]{callNodeMethod[0], callTargetMethod[0]}; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
100 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
101 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
102 @Override |
19976
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
103 public LoopNode createLoopNode(RepeatingNode repeatingNode) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
104 if (!(repeatingNode instanceof Node)) { |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
105 throw new IllegalArgumentException("Repeating node must be of type Node."); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
106 } |
21394
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
107 return getLoopNodeFactory().create(repeatingNode); |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
108 } |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
109 |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
110 protected LoopNodeFactory getLoopNodeFactory() { |
19976
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
111 if (loopNodeFactory == null) { |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
112 loopNodeFactory = loadPrioritizedServiceProvider(LoopNodeFactory.class); |
596f6f9a7412
Truffle: make loop node implementation exchangable for graal runtime versions.
Christian Humer <christian.humer@oracle.com>
parents:
19472
diff
changeset
|
113 } |
21394
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
114 return loopNodeFactory; |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
115 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
116 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
117 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
118 public DirectCallNode createDirectCallNode(CallTarget target) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
119 if (target instanceof OptimizedCallTarget) { |
18207
881aa0ed3904
Truffle: refactor TraceTruffleSplitting into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18204
diff
changeset
|
120 return new OptimizedDirectCallNode(this, (OptimizedCallTarget) target); |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
121 } else { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
122 throw new IllegalStateException(String.format("Unexpected call target class %s!", target.getClass())); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
123 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
124 } |
12529
23dc5dfdb9c7
Add OptimizedCallTarget.call(PackedFrame, Arguments) frame prologue injection
Matthias Grimmer <grimmer@ssw.jku.at>
parents:
11934
diff
changeset
|
125 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
126 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
127 public IndirectCallNode createIndirectCallNode() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
128 return new OptimizedIndirectCallNode(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
129 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
130 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
131 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
132 public VirtualFrame createVirtualFrame(Object[] arguments, FrameDescriptor frameDescriptor) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
133 return OptimizedCallTarget.createFrame(frameDescriptor, arguments); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
134 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
135 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
136 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
137 public MaterializedFrame createMaterializedFrame(Object[] arguments) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
138 return createMaterializedFrame(arguments, new FrameDescriptor()); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
139 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
140 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
141 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
142 public MaterializedFrame createMaterializedFrame(Object[] arguments, FrameDescriptor frameDescriptor) { |
19472
2c6addc91175
Truffle: createMaterializedFrame should respect TruffleUseFrameWithoutBoxing option
Andreas Woess <andreas.woess@oracle.com>
parents:
19437
diff
changeset
|
143 if (TruffleCompilerOptions.TruffleUseFrameWithoutBoxing.getValue()) { |
2c6addc91175
Truffle: createMaterializedFrame should respect TruffleUseFrameWithoutBoxing option
Andreas Woess <andreas.woess@oracle.com>
parents:
19437
diff
changeset
|
144 return new FrameWithoutBoxing(frameDescriptor, arguments); |
2c6addc91175
Truffle: createMaterializedFrame should respect TruffleUseFrameWithoutBoxing option
Andreas Woess <andreas.woess@oracle.com>
parents:
19437
diff
changeset
|
145 } else { |
2c6addc91175
Truffle: createMaterializedFrame should respect TruffleUseFrameWithoutBoxing option
Andreas Woess <andreas.woess@oracle.com>
parents:
19437
diff
changeset
|
146 return new FrameWithBoxing(frameDescriptor, arguments); |
2c6addc91175
Truffle: createMaterializedFrame should respect TruffleUseFrameWithoutBoxing option
Andreas Woess <andreas.woess@oracle.com>
parents:
19437
diff
changeset
|
147 } |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
148 } |
15210
201f6858a4f3
Restructure the interaction between OptimizedCallTarget and GraalTruffleRuntime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
15018
diff
changeset
|
149 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
150 @Override |
18386
656331a61829
Truffle: add support for setting a couple of compiler options for individual execution contexts.
Chris Seaton <chris.seaton@oracle.com>
parents:
18271
diff
changeset
|
151 public CompilerOptions createCompilerOptions() { |
656331a61829
Truffle: add support for setting a couple of compiler options for individual execution contexts.
Chris Seaton <chris.seaton@oracle.com>
parents:
18271
diff
changeset
|
152 return new GraalCompilerOptions(); |
656331a61829
Truffle: add support for setting a couple of compiler options for individual execution contexts.
Chris Seaton <chris.seaton@oracle.com>
parents:
18271
diff
changeset
|
153 } |
656331a61829
Truffle: add support for setting a couple of compiler options for individual execution contexts.
Chris Seaton <chris.seaton@oracle.com>
parents:
18271
diff
changeset
|
154 |
656331a61829
Truffle: add support for setting a couple of compiler options for individual execution contexts.
Chris Seaton <chris.seaton@oracle.com>
parents:
18271
diff
changeset
|
155 @Override |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
156 public Assumption createAssumption() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
157 return createAssumption(null); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
158 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
159 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
160 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
161 public Assumption createAssumption(String name) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
162 return new OptimizedAssumption(name); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
163 } |
15210
201f6858a4f3
Restructure the interaction between OptimizedCallTarget and GraalTruffleRuntime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
15018
diff
changeset
|
164 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
165 public GraalTruffleCompilationListener getCompilationNotify() { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
166 return compilationNotify; |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
167 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
168 |
18130
b4e38f4ca414
Truffle: rename @SlowPath to @TruffleBoundary.
Christian Humer <christian.humer@gmail.com>
parents:
17192
diff
changeset
|
169 @TruffleBoundary |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
170 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
171 public <T> T iterateFrames(FrameInstanceVisitor<T> visitor) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
172 initStackIntrospection(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
173 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
174 InspectedFrameVisitor<T> inspectedFrameVisitor = new InspectedFrameVisitor<T>() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
175 private boolean skipNext = false; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
176 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
177 public T visitFrame(InspectedFrame frame) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
178 if (skipNext) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
179 assert frame.isMethod(callTargetMethod[0]); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
180 skipNext = false; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
181 return null; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
182 } |
15210
201f6858a4f3
Restructure the interaction between OptimizedCallTarget and GraalTruffleRuntime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
15018
diff
changeset
|
183 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
184 if (frame.isMethod(callNodeMethod[0])) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
185 skipNext = true; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
186 return visitor.visitFrame(new GraalFrameInstance.CallNodeFrame(frame)); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
187 } else { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
188 assert frame.isMethod(callTargetMethod[0]); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
189 return visitor.visitFrame(new GraalFrameInstance.CallTargetFrame(frame, false)); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
190 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
191 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
192 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
193 }; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
194 return stackIntrospection.iterateFrames(anyFrameMethod, anyFrameMethod, 1, inspectedFrameVisitor); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
195 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
196 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
197 private void initStackIntrospection() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
198 if (stackIntrospection == null) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
199 stackIntrospection = Graal.getRequiredCapability(StackIntrospection.class); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
200 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
201 } |
17005
112ab4a3de3a
Truffle: added Graal runtime API to wait for the completion of a compilation.
Christian Humer <christian.humer@gmail.com>
parents:
15222
diff
changeset
|
202 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
203 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
204 public FrameInstance getCallerFrame() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
205 return iterateFrames(frame -> frame); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
206 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
207 |
18130
b4e38f4ca414
Truffle: rename @SlowPath to @TruffleBoundary.
Christian Humer <christian.humer@gmail.com>
parents:
17192
diff
changeset
|
208 @TruffleBoundary |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
209 @Override |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
210 public FrameInstance getCurrentFrame() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
211 initStackIntrospection(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
212 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
213 return stackIntrospection.iterateFrames(callTargetMethod, callTargetMethod, 0, frame -> new GraalFrameInstance.CallTargetFrame(frame, true)); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
214 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
215 |
18220
890d284b2771
Truffle: add TruffleRuntime#getCapability method
Andreas Woess <andreas.woess@jku.at>
parents:
18213
diff
changeset
|
216 public <T> T getCapability(Class<T> capability) { |
19309
c386ace07981
Truffle: move unsafe access methods out of CompilerDirectives
Andreas Woess <andreas.woess@oracle.com>
parents:
18961
diff
changeset
|
217 if (capability == UnsafeAccessFactory.class) { |
c386ace07981
Truffle: move unsafe access methods out of CompilerDirectives
Andreas Woess <andreas.woess@oracle.com>
parents:
18961
diff
changeset
|
218 return capability.cast(new UnsafeAccessFactoryImpl()); |
c386ace07981
Truffle: move unsafe access methods out of CompilerDirectives
Andreas Woess <andreas.woess@oracle.com>
parents:
18961
diff
changeset
|
219 } |
18220
890d284b2771
Truffle: add TruffleRuntime#getCapability method
Andreas Woess <andreas.woess@jku.at>
parents:
18213
diff
changeset
|
220 return null; |
890d284b2771
Truffle: add TruffleRuntime#getCapability method
Andreas Woess <andreas.woess@jku.at>
parents:
18213
diff
changeset
|
221 } |
890d284b2771
Truffle: add TruffleRuntime#getCapability method
Andreas Woess <andreas.woess@jku.at>
parents:
18213
diff
changeset
|
222 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
223 protected boolean acceptForCompilation(RootNode rootNode) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
224 if (TruffleCompileOnly.getValue() != null) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
225 if (includes == null) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
226 parseCompileOnly(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
227 } |
15211
59f71608aa9a
Clean up of relationship between compilation policy and optimized call target.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
15210
diff
changeset
|
228 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
229 String name = rootNode.toString(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
230 boolean included = includes.isEmpty(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
231 for (int i = 0; !included && i < includes.size(); i++) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
232 if (name.contains(includes.get(i))) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
233 included = true; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
234 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
235 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
236 if (!included) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
237 return false; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
238 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
239 for (String exclude : excludes) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
240 if (name.contains(exclude)) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
241 return false; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
242 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
243 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
244 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
245 return true; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
246 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
247 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
248 protected void parseCompileOnly() { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
249 includes = new ArrayList<>(); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
250 excludes = new ArrayList<>(); |
15222
58d2c5bdb9cd
Truffle: Add option TruffleReturnTypeSpeculation.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
15211
diff
changeset
|
251 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
252 String[] items = TruffleCompileOnly.getValue().split(","); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
253 for (String item : items) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
254 if (item.startsWith("~")) { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
255 excludes.add(item.substring(1)); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
256 } else { |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
257 includes.add(item); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
258 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
259 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
260 } |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
261 |
18162
ab62800259ff
Truffle: renamed the splitting to callTargetCloning. Made RootNode cloning an implementation detail of the Truffle runtime.
Christian Humer <christian.humer@gmail.com>
parents:
18130
diff
changeset
|
262 public abstract RootCallTarget createClonedCallTarget(OptimizedCallTarget sourceCallTarget, RootNode root); |
ab62800259ff
Truffle: renamed the splitting to callTargetCloning. Made RootNode cloning an implementation detail of the Truffle runtime.
Christian Humer <christian.humer@gmail.com>
parents:
18130
diff
changeset
|
263 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
264 public void addCompilationListener(GraalTruffleCompilationListener listener) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
265 compilationListeners.add(listener); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
266 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
267 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
268 public void removeCompilationListener(GraalTruffleCompilationListener listener) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
269 compilationListeners.remove(listener); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
270 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
271 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
272 private void shutdown() { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
273 getCompilationNotify().notifyShutdown(this); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
274 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
275 |
18212
546cfe7a19b6
Truffle: add getQueuedCallTargets to GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18209
diff
changeset
|
276 public abstract Collection<OptimizedCallTarget> getQueuedCallTargets(); |
546cfe7a19b6
Truffle: add getQueuedCallTargets to GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18209
diff
changeset
|
277 |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
278 public abstract void compile(OptimizedCallTarget optimizedCallTarget, boolean mayBeAsynchronous); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
279 |
21394
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
280 protected void doCompile(OptimizedCallTarget optimizedCallTarget) { |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
281 boolean success = true; |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
282 try (Scope s = Debug.scope("Truffle", new TruffleDebugJavaMethod(optimizedCallTarget))) { |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
283 truffleCompiler.compileMethod(optimizedCallTarget); |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
284 } catch (Throwable e) { |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
285 optimizedCallTarget.notifyCompilationFailed(e); |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
286 success = false; |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
287 } finally { |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
288 optimizedCallTarget.notifyCompilationFinished(success); |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
289 } |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
290 } |
706ffad4d773
Allow subclasses of TruffleCompiler
Christian Wimmer <christian.wimmer@oracle.com>
parents:
21296
diff
changeset
|
291 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
292 public abstract boolean cancelInstalledTask(OptimizedCallTarget optimizedCallTarget, Object source, CharSequence reason); |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
293 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
294 public abstract void waitForCompilation(OptimizedCallTarget optimizedCallTarget, long timeout) throws ExecutionException, TimeoutException; |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
295 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
296 public abstract boolean isCompiling(OptimizedCallTarget optimizedCallTarget); |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
297 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
298 public abstract void invalidateInstalledCode(OptimizedCallTarget optimizedCallTarget, Object source, CharSequence reason); |
17192
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
299 |
d0d76deeacb9
Make more Truffle code HotSpot independent, and allow more customization by subclasses
Christian Wimmer <christian.wimmer@oracle.com>
parents:
17005
diff
changeset
|
300 public abstract void reinstallStubs(); |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
301 |
21296
c3a6c85aec82
Add flag for Truffle infopoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
21157
diff
changeset
|
302 public final boolean enableInfopoints() { |
c3a6c85aec82
Add flag for Truffle infopoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
21157
diff
changeset
|
303 /* Currently infopoints can change code generation so don't enable them automatically */ |
c3a6c85aec82
Add flag for Truffle infopoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
21157
diff
changeset
|
304 return platformEnableInfopoints() && TruffleEnableInfopoints.getValue(); |
c3a6c85aec82
Add flag for Truffle infopoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
21157
diff
changeset
|
305 } |
c3a6c85aec82
Add flag for Truffle infopoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
21157
diff
changeset
|
306 |
c3a6c85aec82
Add flag for Truffle infopoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
21157
diff
changeset
|
307 protected abstract boolean platformEnableInfopoints(); |
21157
31a1589aecdf
Make Truffle respect -XX:+DebugNonSafepoints
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
20080
diff
changeset
|
308 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
309 private final class DispatchTruffleCompilationListener implements GraalTruffleCompilationListener { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
310 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
311 public void notifyCompilationQueued(OptimizedCallTarget target) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
312 compilationListeners.forEach(l -> l.notifyCompilationQueued(target)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
313 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
314 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
315 public void notifyCompilationInvalidated(OptimizedCallTarget target, Object source, CharSequence reason) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
316 compilationListeners.forEach(l -> l.notifyCompilationInvalidated(target, source, reason)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
317 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
318 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
319 public void notifyCompilationDequeued(OptimizedCallTarget target, Object source, CharSequence reason) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
320 compilationListeners.forEach(l -> l.notifyCompilationDequeued(target, source, reason)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
321 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
322 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
323 public void notifyCompilationFailed(OptimizedCallTarget target, StructuredGraph graph, Throwable t) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
324 compilationListeners.forEach(l -> l.notifyCompilationFailed(target, graph, t)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
325 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
326 |
18207
881aa0ed3904
Truffle: refactor TraceTruffleSplitting into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18204
diff
changeset
|
327 public void notifyCompilationSplit(OptimizedDirectCallNode callNode) { |
881aa0ed3904
Truffle: refactor TraceTruffleSplitting into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18204
diff
changeset
|
328 compilationListeners.forEach(l -> l.notifyCompilationSplit(callNode)); |
881aa0ed3904
Truffle: refactor TraceTruffleSplitting into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18204
diff
changeset
|
329 } |
881aa0ed3904
Truffle: refactor TraceTruffleSplitting into separate class.
Christian Humer <christian.humer@gmail.com>
parents:
18204
diff
changeset
|
330 |
18209
dc6b023513b8
Truffle: added compilation graal tier finished event to compilation listener.
Christian Humer <christian.humer@gmail.com>
parents:
18208
diff
changeset
|
331 public void notifyCompilationGraalTierFinished(OptimizedCallTarget target, StructuredGraph graph) { |
dc6b023513b8
Truffle: added compilation graal tier finished event to compilation listener.
Christian Humer <christian.humer@gmail.com>
parents:
18208
diff
changeset
|
332 compilationListeners.forEach(l -> l.notifyCompilationGraalTierFinished(target, graph)); |
dc6b023513b8
Truffle: added compilation graal tier finished event to compilation listener.
Christian Humer <christian.humer@gmail.com>
parents:
18208
diff
changeset
|
333 } |
dc6b023513b8
Truffle: added compilation graal tier finished event to compilation listener.
Christian Humer <christian.humer@gmail.com>
parents:
18208
diff
changeset
|
334 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
335 public void notifyCompilationSuccess(OptimizedCallTarget target, StructuredGraph graph, CompilationResult result) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
336 compilationListeners.forEach(l -> l.notifyCompilationSuccess(target, graph, result)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
337 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
338 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
339 public void notifyCompilationStarted(OptimizedCallTarget target) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
340 compilationListeners.forEach(l -> l.notifyCompilationStarted(target)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
341 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
342 |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
343 public void notifyCompilationTruffleTierFinished(OptimizedCallTarget target, StructuredGraph graph) { |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
344 compilationListeners.forEach(l -> l.notifyCompilationTruffleTierFinished(target, graph)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
345 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
346 |
18271
b0a8fb72c721
Truffle: changed argument of GraalTruffleCompilationListener#notifyStartup and #notifyShutdown to GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18270
diff
changeset
|
347 public void notifyShutdown(GraalTruffleRuntime runtime) { |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
348 compilationListeners.forEach(l -> l.notifyShutdown(runtime)); |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
349 } |
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
350 |
18271
b0a8fb72c721
Truffle: changed argument of GraalTruffleCompilationListener#notifyStartup and #notifyShutdown to GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18270
diff
changeset
|
351 public void notifyStartup(GraalTruffleRuntime runtime) { |
18270
1d430dfce76d
Truffle: added notifyStartup event to GraalTruffleCompilationListener.
Christian Humer <christian.humer@gmail.com>
parents:
18220
diff
changeset
|
352 compilationListeners.forEach(l -> l.notifyStartup(runtime)); |
1d430dfce76d
Truffle: added notifyStartup event to GraalTruffleCompilationListener.
Christian Humer <christian.humer@gmail.com>
parents:
18220
diff
changeset
|
353 } |
1d430dfce76d
Truffle: added notifyStartup event to GraalTruffleCompilationListener.
Christian Humer <christian.humer@gmail.com>
parents:
18220
diff
changeset
|
354 |
18199
c5c80abc3fc6
Truffle: add support for a CompilationListener in GraalTruffleRuntime.
Christian Humer <christian.humer@gmail.com>
parents:
18162
diff
changeset
|
355 } |
10484
0097fb11c16f
Add basic version of Graal's Truffle runtime.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
diff
changeset
|
356 } |