Mercurial > hg > truffle
annotate graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotSuitesProvider.java @ 19776:16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
replace BytecodeParser.currentDepth with BytecodeParser.parent
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 19 Feb 2015 15:40:17 +0100 |
parents | b828f1f74625 |
children | 09dfba3dbfb2 |
rev | line source |
---|---|
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1 /* |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
2 * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
4 * |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
8 * |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
13 * accompanied this code). |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
14 * |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
18 * |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
21 * questions. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
22 */ |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
23 package com.oracle.graal.hotspot.meta; |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
24 |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
25 import static com.oracle.graal.api.meta.MetaUtil.*; |
15259
d90e5c22ba55
Move GraalOptions to graal.compiler.common.
Josef Eisl <josef.eisl@jku.at>
parents:
14991
diff
changeset
|
26 import static com.oracle.graal.compiler.common.GraalOptions.*; |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
27 import static com.oracle.graal.replacements.NodeIntrinsificationPhase.*; |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
28 |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
29 import java.util.*; |
14991
64dcb92ee75a
Truffle: Change signature for Truffle calls from (PackedFrame, Arguments) to (Object[]).
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
13640
diff
changeset
|
30 |
19132
8fe322db4b6d
Prototype for configuring inlining during parsing via a closure in the GraphBuilderConfiguration object.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19050
diff
changeset
|
31 import com.oracle.graal.api.meta.*; |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
32 import com.oracle.graal.compiler.common.type.*; |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
33 import com.oracle.graal.graph.Node.NodeIntrinsic; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
34 import com.oracle.graal.hotspot.*; |
17153
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
35 import com.oracle.graal.hotspot.bridge.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
36 import com.oracle.graal.hotspot.phases.*; |
13585 | 37 import com.oracle.graal.java.*; |
19050
75da87c96605
initial commit of GraphBuilderPhase plugins
Doug Simon <doug.simon@oracle.com>
parents:
19040
diff
changeset
|
38 import com.oracle.graal.java.GraphBuilderConfiguration.DebugInfoMode; |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
39 import com.oracle.graal.java.GraphBuilderPlugin.AnnotatedInvocationPlugin; |
19390
7f4201b633e7
renamed GraphBuilderPlugins to InvocationPlugins and consolidated it into GraphBuilderConfiguration; moved declaration of GraphBuilderPlugin sub-interfaces into GraphBuilderPlugin
Doug Simon <doug.simon@oracle.com>
parents:
19270
diff
changeset
|
40 import com.oracle.graal.java.GraphBuilderPlugin.InlineInvokePlugin; |
19408
7345e1a7069f
added LoadFieldPlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19390
diff
changeset
|
41 import com.oracle.graal.java.GraphBuilderPlugin.LoadFieldPlugin; |
19231
df89224ee04a
Add LowLevelSuites to SuitesProvider.
Josef Eisl <josef.eisl@jku.at>
parents:
19132
diff
changeset
|
42 import com.oracle.graal.lir.phases.*; |
19390
7f4201b633e7
renamed GraphBuilderPlugins to InvocationPlugins and consolidated it into GraphBuilderConfiguration; moved declaration of GraphBuilderPlugin sub-interfaces into GraphBuilderPlugin
Doug Simon <doug.simon@oracle.com>
parents:
19270
diff
changeset
|
43 import com.oracle.graal.nodes.*; |
19410
e4d40c71954b
added InlineInvokePlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19408
diff
changeset
|
44 import com.oracle.graal.nodes.spi.*; |
16871
e728b9d4905c
Recompute phase suites when options are changed.
Roland Schatz <roland.schatz@oracle.com>
parents:
15909
diff
changeset
|
45 import com.oracle.graal.options.*; |
19196
75cf0899be47
Use serializable interface in DerivedOptionValue.
Roland Schatz <roland.schatz@oracle.com>
parents:
19132
diff
changeset
|
46 import com.oracle.graal.options.DerivedOptionValue.OptionSupplier; |
13585 | 47 import com.oracle.graal.phases.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
48 import com.oracle.graal.phases.tiers.*; |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
49 import com.oracle.graal.replacements.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
50 |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
51 /** |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
52 * HotSpot implementation of {@link SuitesProvider}. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
53 */ |
19237
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
54 public class HotSpotSuitesProvider implements SuitesProvider { |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
55 |
16871
e728b9d4905c
Recompute phase suites when options are changed.
Roland Schatz <roland.schatz@oracle.com>
parents:
15909
diff
changeset
|
56 protected final DerivedOptionValue<Suites> defaultSuites; |
13585 | 57 protected final PhaseSuite<HighTierContext> defaultGraphBuilderSuite; |
19270
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
58 private final DerivedOptionValue<LIRSuites> defaultLIRSuites; |
18525
c538c2c6b7e2
changed most references to HotSpotGraalRuntime to use HotSpotGraalRuntimeProvider instead
Doug Simon <doug.simon@oracle.com>
parents:
18126
diff
changeset
|
59 protected final HotSpotGraalRuntimeProvider runtime; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
60 |
19237
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
61 private class SuitesSupplier implements OptionSupplier<Suites> { |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
62 |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
63 private static final long serialVersionUID = -3444304453553320390L; |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
64 |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
65 public Suites get() { |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
66 return createSuites(); |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
67 } |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
68 |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
69 } |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
70 |
19270
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
71 private class LIRSuitesSupplier implements OptionSupplier<LIRSuites> { |
19237
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
72 |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
73 private static final long serialVersionUID = -1558586374095874299L; |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
74 |
19270
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
75 public LIRSuites get() { |
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
76 return createLIRSuites(); |
19237
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
77 } |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
78 |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
79 } |
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
80 |
19415
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
81 public HotSpotSuitesProvider(HotSpotGraalRuntimeProvider runtime, MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, Replacements replacements) { |
12431
7080a96be216
rename: graalRuntime -> runtime, getGraalRuntime -> getRuntime
Doug Simon <doug.simon@oracle.com>
parents:
12429
diff
changeset
|
82 this.runtime = runtime; |
19415
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
83 this.defaultGraphBuilderSuite = createGraphBuilderSuite(metaAccess, constantReflection, replacements); |
19237
9c921eb127ba
SuitesProvider: use inner supplier classes.
Josef Eisl <josef.eisl@jku.at>
parents:
19235
diff
changeset
|
84 this.defaultSuites = new DerivedOptionValue<>(new SuitesSupplier()); |
19270
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
85 this.defaultLIRSuites = new DerivedOptionValue<>(new LIRSuitesSupplier()); |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
86 } |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
87 |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
88 public Suites getDefaultSuites() { |
16871
e728b9d4905c
Recompute phase suites when options are changed.
Roland Schatz <roland.schatz@oracle.com>
parents:
15909
diff
changeset
|
89 return defaultSuites.getValue(); |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
90 } |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
91 |
13585 | 92 public PhaseSuite<HighTierContext> getDefaultGraphBuilderSuite() { |
93 return defaultGraphBuilderSuite; | |
94 } | |
95 | |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
96 public Suites createSuites() { |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
97 Suites ret = Suites.createDefaultSuites(); |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
98 |
13378
16d99e9d77ad
Options: rename flag (AOTCompilation -> ImmutableCode)
Bernhard Urban <bernhard.urban@jku.at>
parents:
12431
diff
changeset
|
99 if (ImmutableCode.getValue()) { |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
100 // lowering introduces class constants, therefore it must be after lowering |
15909
e43591136d9f
Support for compressed constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
15259
diff
changeset
|
101 ret.getHighTier().appendPhase(new LoadJavaMirrorWithKlassPhase(runtime.getConfig().classMirrorOffset, runtime.getConfig().getOopEncoding())); |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
102 if (VerifyPhases.getValue()) { |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
103 ret.getHighTier().appendPhase(new AheadOfTimeVerificationPhase()); |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
104 } |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
105 } |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
106 |
18531
cdb9c605051a
removed some static accesses to HotSpotGraalRuntime from some tests
Doug Simon <doug.simon@oracle.com>
parents:
18525
diff
changeset
|
107 ret.getMidTier().appendPhase(new WriteBarrierAdditionPhase(runtime.getConfig())); |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
108 if (VerifyPhases.getValue()) { |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
109 ret.getMidTier().appendPhase(new WriteBarrierVerificationPhase()); |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
110 } |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
111 |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
112 return ret; |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
113 } |
13585 | 114 |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
115 NodeIntrinsificationPhase intrinsifier; |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
116 |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
117 NodeIntrinsificationPhase getIntrinsifier() { |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
118 if (intrinsifier == null) { |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
119 HotSpotProviders providers = runtime.getHostProviders(); |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
120 intrinsifier = new NodeIntrinsificationPhase(providers, providers.getSnippetReflection()); |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
121 } |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
122 return intrinsifier; |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
123 } |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
124 |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
125 MetaAccessProvider getMetaAccess() { |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
126 return runtime.getHostProviders().getMetaAccess(); |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
127 } |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
128 |
19415
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
129 protected PhaseSuite<HighTierContext> createGraphBuilderSuite(MetaAccessProvider metaAccess, ConstantReflectionProvider constantReflection, Replacements replacements) { |
13585 | 130 PhaseSuite<HighTierContext> suite = new PhaseSuite<>(); |
17113
583bf03b3e1a
apply CompilerToVM.shouldDebugNonSafepoints() to HotSpot Truffle compilations as well
Doug Simon <doug.simon@oracle.com>
parents:
16871
diff
changeset
|
131 GraphBuilderConfiguration config = GraphBuilderConfiguration.getDefault(); |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
132 config.setLoadFieldPlugin(new LoadFieldPlugin() { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
133 public boolean apply(GraphBuilderContext builder, ValueNode receiver, ResolvedJavaField field) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
134 if (InlineDuringParsing.getValue() || builder.parsingReplacement()) { |
19415
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
135 if (receiver.isConstant()) { |
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
136 JavaConstant asJavaConstant = receiver.asJavaConstant(); |
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
137 return tryConstantFold(builder, metaAccess, constantReflection, field, asJavaConstant); |
fcb426a54eed
pass required providers through to HotSpotSuitesProvider; remove redundant registration of Graal InlineInvokePlugin
Doug Simon <doug.simon@oracle.com>
parents:
19410
diff
changeset
|
138 } |
19408
7345e1a7069f
added LoadFieldPlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19390
diff
changeset
|
139 } |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
140 return false; |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
141 } |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
142 |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
143 public boolean apply(GraphBuilderContext builder, ResolvedJavaField staticField) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
144 return tryConstantFold(builder, metaAccess, constantReflection, staticField, null); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
145 } |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
146 }); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
147 config.setInlineInvokePlugin(new InlineInvokePlugin() { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
148 public ResolvedJavaMethod getInlinedMethod(GraphBuilderContext builder, ResolvedJavaMethod method, ValueNode[] args, JavaType returnType) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
149 ResolvedJavaMethod subst = replacements.getMethodSubstitutionMethod(method); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
150 if (subst != null) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
151 // Forced inlining of intrinsics |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
152 return subst; |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
153 } |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
154 if (builder.parsingReplacement()) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
155 if (getIntrinsifier().getIntrinsic(method) != null) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
156 // @NodeIntrinsic methods are handled by the AnnotatedInvocationPlugin |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
157 // registered below |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
158 return null; |
19410
e4d40c71954b
added InlineInvokePlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19408
diff
changeset
|
159 } |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
160 // Force inlining when parsing replacements |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
161 return method; |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
162 } else { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
163 assert getIntrinsifier().getIntrinsic(method) == null : String.format("@%s method %s must only be called from within a replacement%n%s", NodeIntrinsic.class.getSimpleName(), |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
164 method.format("%h.%n"), builder); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
165 if (InlineDuringParsing.getValue() && method.hasBytecodes() && method.getCode().length <= TrivialInliningSize.getValue() && |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
166 builder.getDepth() < InlineDuringParsingMaxDepth.getValue()) { |
19410
e4d40c71954b
added InlineInvokePlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19408
diff
changeset
|
167 return method; |
e4d40c71954b
added InlineInvokePlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19408
diff
changeset
|
168 } |
e4d40c71954b
added InlineInvokePlugin for Graal
Doug Simon <doug.simon@oracle.com>
parents:
19408
diff
changeset
|
169 } |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
170 return null; |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
171 } |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
172 }); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
173 config.setAnnotatedInvocationPlugin(new AnnotatedInvocationPlugin() { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
174 public boolean apply(GraphBuilderContext builder, ResolvedJavaMethod method, ValueNode[] args) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
175 if (builder.parsingReplacement()) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
176 NodeIntrinsificationPhase intrins = getIntrinsifier(); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
177 NodeIntrinsic intrinsic = intrins.getIntrinsic(method); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
178 if (intrinsic != null) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
179 Signature sig = method.getSignature(); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
180 Kind returnKind = sig.getReturnKind(); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
181 Stamp stamp = StampFactory.forKind(returnKind); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
182 if (returnKind == Kind.Object) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
183 JavaType returnType = sig.getReturnType(method.getDeclaringClass()); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
184 if (returnType instanceof ResolvedJavaType) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
185 stamp = StampFactory.declared((ResolvedJavaType) returnType); |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
186 } |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
187 } |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
188 |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
189 ValueNode res = intrins.createIntrinsicNode(Arrays.asList(args), stamp, method, builder.getGraph(), intrinsic); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
190 res = builder.append(res); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
191 if (res.getKind().getStackKind() != Kind.Void) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
192 builder.push(returnKind.getStackKind(), res); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
193 } |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
194 return true; |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
195 } else if (intrins.isFoldable(method)) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
196 ResolvedJavaType[] parameterTypes = resolveJavaTypes(method.toParameterTypes(), method.getDeclaringClass()); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
197 JavaConstant constant = intrins.tryFold(Arrays.asList(args), parameterTypes, method); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
198 if (!COULD_NOT_FOLD.equals(constant)) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
199 if (constant != null) { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
200 // Replace the invoke with the result of the call |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
201 ConstantNode res = builder.append(ConstantNode.forConstant(constant, getMetaAccess())); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
202 builder.push(res.getKind().getStackKind(), builder.append(res)); |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
203 } else { |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
204 // This must be a void invoke |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
205 assert method.getSignature().getReturnKind() == Kind.Void; |
19500
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
206 } |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
207 return true; |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
208 } |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
209 } |
b828f1f74625
add graph builder plugins for Unsafe and Word
Doug Simon <doug.simon@oracle.com>
parents:
19457
diff
changeset
|
210 } |
19776
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
211 return false; |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
212 } |
16ad9711b44f
always inline intrinsics in the graph builder as well as any methods (recursively) called from an instrinsic
Doug Simon <doug.simon@oracle.com>
parents:
19500
diff
changeset
|
213 }); |
17113
583bf03b3e1a
apply CompilerToVM.shouldDebugNonSafepoints() to HotSpot Truffle compilations as well
Doug Simon <doug.simon@oracle.com>
parents:
16871
diff
changeset
|
214 suite.appendPhase(new GraphBuilderPhase(config)); |
13585 | 215 return suite; |
216 } | |
17153
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
217 |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
218 /** |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
219 * Modifies the {@link GraphBuilderConfiguration} to build extra |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
220 * {@linkplain DebugInfoMode#Simple debug info} if the VM |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
221 * {@linkplain CompilerToVM#shouldDebugNonSafepoints() requests} it. |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
222 * |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
223 * @param gbs the current graph builder suite |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
224 * @return a possibly modified graph builder suite |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
225 */ |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
226 public static PhaseSuite<HighTierContext> withSimpleDebugInfoIfRequested(PhaseSuite<HighTierContext> gbs) { |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
227 if (HotSpotGraalRuntime.runtime().getCompilerToVM().shouldDebugNonSafepoints()) { |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
228 PhaseSuite<HighTierContext> newGbs = gbs.copy(); |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
229 GraphBuilderPhase graphBuilderPhase = (GraphBuilderPhase) newGbs.findPhase(GraphBuilderPhase.class).previous(); |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
230 GraphBuilderConfiguration graphBuilderConfig = graphBuilderPhase.getGraphBuilderConfig(); |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
231 GraphBuilderPhase newGraphBuilderPhase = new GraphBuilderPhase(graphBuilderConfig.withDebugInfoMode(DebugInfoMode.Simple)); |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
232 newGbs.findPhase(GraphBuilderPhase.class).set(newGraphBuilderPhase); |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
233 return newGbs; |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
234 } |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
235 return gbs; |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
236 } |
646ddd52d79a
only generate extra debug info if on HotSpot *and* compiling for HotSpot execution
Doug Simon <doug.simon@oracle.com>
parents:
17113
diff
changeset
|
237 |
19270
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
238 public LIRSuites getDefaultLIRSuites() { |
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
239 return defaultLIRSuites.getValue(); |
19231
df89224ee04a
Add LowLevelSuites to SuitesProvider.
Josef Eisl <josef.eisl@jku.at>
parents:
19132
diff
changeset
|
240 } |
df89224ee04a
Add LowLevelSuites to SuitesProvider.
Josef Eisl <josef.eisl@jku.at>
parents:
19132
diff
changeset
|
241 |
19270
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
242 public LIRSuites createLIRSuites() { |
292442bed972
Rename LowLevelSuites to LIRSuites.
Josef Eisl <josef.eisl@jku.at>
parents:
19237
diff
changeset
|
243 return Suites.createDefaultLIRSuites(); |
19231
df89224ee04a
Add LowLevelSuites to SuitesProvider.
Josef Eisl <josef.eisl@jku.at>
parents:
19132
diff
changeset
|
244 } |
df89224ee04a
Add LowLevelSuites to SuitesProvider.
Josef Eisl <josef.eisl@jku.at>
parents:
19132
diff
changeset
|
245 |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
246 } |