Mercurial > hg > truffle
annotate graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/DefaultHotSpotLoweringProvider.java @ 18699:08b17b738500
Add hooks for verifying heap from generated code
author | Tom Rodriguez <tom.rodriguez@oracle.com> |
---|---|
date | Tue, 16 Dec 2014 13:36:16 -0800 |
parents | d138867d61c4 |
children | ab9d3ff6829b |
rev | line source |
---|---|
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
1 /* |
15024
2ee777221036
Use high level CompressionNode in lowering of CompareAndSwapNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
15023
diff
changeset
|
2 * Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved. |
12429
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 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
25 import static com.oracle.graal.api.meta.LocationIdentity.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
26 import static com.oracle.graal.compiler.common.GraalOptions.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
27 import static com.oracle.graal.hotspot.meta.HotSpotForeignCallsProviderImpl.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
28 import static com.oracle.graal.hotspot.replacements.HotSpotReplacementsUtil.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
29 import static com.oracle.graal.hotspot.replacements.NewObjectSnippets.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
30 |
18264
e28aa8468d5e
converted HotSpotResolvedJavaField to an interface
Doug Simon <doug.simon@oracle.com>
parents:
18262
diff
changeset
|
31 import java.lang.ref.*; |
e28aa8468d5e
converted HotSpotResolvedJavaField to an interface
Doug Simon <doug.simon@oracle.com>
parents:
18262
diff
changeset
|
32 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
33 import com.oracle.graal.api.code.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
34 import com.oracle.graal.api.meta.*; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
35 import com.oracle.graal.compiler.common.*; |
16166
d69ede72299a
Expose loadStamp method in HotSpotLoweringProvider interface.
Roland Schatz <roland.schatz@oracle.com>
parents:
15889
diff
changeset
|
36 import com.oracle.graal.compiler.common.type.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
37 import com.oracle.graal.graph.*; |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
38 import com.oracle.graal.hotspot.*; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
39 import com.oracle.graal.hotspot.debug.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
40 import com.oracle.graal.hotspot.nodes.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
41 import com.oracle.graal.hotspot.nodes.type.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
42 import com.oracle.graal.hotspot.replacements.*; |
18596
5afa718edb8b
arraycopy: move related classes to dedicated package
Bernhard Urban <bernhard.urban@jku.at>
parents:
18544
diff
changeset
|
43 import com.oracle.graal.hotspot.replacements.arraycopy.*; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
44 import com.oracle.graal.java.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
45 import com.oracle.graal.nodes.*; |
16563
1e63cb55f61d
Move InvokeKind from MethodCallTargetNode to CallTargetNode
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16484
diff
changeset
|
46 import com.oracle.graal.nodes.CallTargetNode.InvokeKind; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
47 import com.oracle.graal.nodes.HeapAccess.BarrierType; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
48 import com.oracle.graal.nodes.calc.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
49 import com.oracle.graal.nodes.debug.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
50 import com.oracle.graal.nodes.extended.*; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
51 import com.oracle.graal.nodes.java.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
52 import com.oracle.graal.nodes.spi.*; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
53 import com.oracle.graal.nodes.type.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
54 import com.oracle.graal.replacements.*; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
55 import com.oracle.graal.replacements.nodes.*; |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
56 |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
57 /** |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
58 * HotSpot implementation of {@link LoweringProvider}. |
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
59 */ |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
60 public class DefaultHotSpotLoweringProvider extends DefaultJavaLoweringProvider implements HotSpotLoweringProvider { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
61 |
18515
8b87897f5b42
introduced HotSpotGraalRuntimeProvder interface
Doug Simon <doug.simon@oracle.com>
parents:
18502
diff
changeset
|
62 protected final HotSpotGraalRuntimeProvider runtime; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
63 protected final ForeignCallsProvider foreignCalls; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
64 protected final HotSpotRegistersProvider registers; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
65 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
66 protected CheckCastDynamicSnippets.Templates checkcastDynamicSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
67 protected InstanceOfSnippets.Templates instanceofSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
68 protected NewObjectSnippets.Templates newObjectSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
69 protected MonitorSnippets.Templates monitorSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
70 protected WriteBarrierSnippets.Templates writeBarrierSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
71 protected LoadExceptionObjectSnippets.Templates exceptionObjectSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
72 protected UnsafeLoadSnippets.Templates unsafeLoadSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
73 protected AssertionSnippets.Templates assertionSnippets; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
74 |
18515
8b87897f5b42
introduced HotSpotGraalRuntimeProvder interface
Doug Simon <doug.simon@oracle.com>
parents:
18502
diff
changeset
|
75 public DefaultHotSpotLoweringProvider(HotSpotGraalRuntimeProvider runtime, MetaAccessProvider metaAccess, ForeignCallsProvider foreignCalls, HotSpotRegistersProvider registers, |
8b87897f5b42
introduced HotSpotGraalRuntimeProvder interface
Doug Simon <doug.simon@oracle.com>
parents:
18502
diff
changeset
|
76 TargetDescription target) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
77 super(metaAccess, target); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
78 this.runtime = runtime; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
79 this.foreignCalls = foreignCalls; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
80 this.registers = registers; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
81 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
82 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
83 public void initialize(HotSpotProviders providers, HotSpotVMConfig config) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
84 super.initialize(providers, providers.getSnippetReflection()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
85 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
86 assert target == providers.getCodeCache().getTarget(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
87 checkcastDynamicSnippets = new CheckCastDynamicSnippets.Templates(providers, target); |
18540
1c4209b4c1be
removed static accesses to HotSpotGraalRuntime from InstanceOfSnippets
Doug Simon <doug.simon@oracle.com>
parents:
18515
diff
changeset
|
88 instanceofSnippets = new InstanceOfSnippets.Templates(providers, target, config.compileThreshold); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
89 newObjectSnippets = new NewObjectSnippets.Templates(providers, target); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
90 monitorSnippets = new MonitorSnippets.Templates(providers, target, config.useFastLocking); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
91 writeBarrierSnippets = new WriteBarrierSnippets.Templates(providers, target, config.useCompressedOops ? config.getOopEncoding() : null); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
92 exceptionObjectSnippets = new LoadExceptionObjectSnippets.Templates(providers, target); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
93 unsafeLoadSnippets = new UnsafeLoadSnippets.Templates(providers, target); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
94 assertionSnippets = new AssertionSnippets.Templates(providers, target); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
95 providers.getReplacements().registerSnippetTemplateCache(new UnsafeArrayCopySnippets.Templates(providers, target)); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
96 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
97 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
98 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
99 public void lower(Node n, LoweringTool tool) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
100 StructuredGraph graph = (StructuredGraph) n.graph(); |
14945
b14cb2d9253d
Make compression and uncompression explicit in the high level graph.
Roland Schatz <roland.schatz@oracle.com>
parents:
14863
diff
changeset
|
101 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
102 if (n instanceof Invoke) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
103 lowerInvoke((Invoke) n, tool, graph); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
104 } else if (n instanceof LoadMethodNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
105 lowerLoadMethodNode((LoadMethodNode) n); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
106 } else if (n instanceof StoreHubNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
107 lowerStoreHubNode((StoreHubNode) n, graph); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
108 } else if (n instanceof OSRStartNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
109 lowerOSRStartNode((OSRStartNode) n); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
110 } else if (n instanceof DynamicCounterNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
111 lowerDynamicCounterNode((DynamicCounterNode) n); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
112 } else if (n instanceof BytecodeExceptionNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
113 lowerBytecodeExceptionNode((BytecodeExceptionNode) n); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
114 } else if (n instanceof CheckCastDynamicNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
115 checkcastDynamicSnippets.lower((CheckCastDynamicNode) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
116 } else if (n instanceof InstanceOfNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
117 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
118 instanceofSnippets.lower((InstanceOfNode) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
119 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
120 } else if (n instanceof InstanceOfDynamicNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
121 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
122 instanceofSnippets.lower((InstanceOfDynamicNode) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
123 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
124 } else if (n instanceof NewInstanceNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
125 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
126 newObjectSnippets.lower((NewInstanceNode) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
127 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
128 } else if (n instanceof DynamicNewInstanceNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
129 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
130 newObjectSnippets.lower((DynamicNewInstanceNode) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
131 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
132 } else if (n instanceof NewArrayNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
133 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
18515
8b87897f5b42
introduced HotSpotGraalRuntimeProvder interface
Doug Simon <doug.simon@oracle.com>
parents:
18502
diff
changeset
|
134 newObjectSnippets.lower((NewArrayNode) n, registers, runtime, tool); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
135 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
136 } else if (n instanceof DynamicNewArrayNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
137 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
138 newObjectSnippets.lower((DynamicNewArrayNode) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
139 } |
18699
08b17b738500
Add hooks for verifying heap from generated code
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18649
diff
changeset
|
140 } else if (n instanceof VerifyHeapNode) { |
08b17b738500
Add hooks for verifying heap from generated code
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18649
diff
changeset
|
141 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
08b17b738500
Add hooks for verifying heap from generated code
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18649
diff
changeset
|
142 newObjectSnippets.lower((VerifyHeapNode) n, registers, runtime, tool); |
08b17b738500
Add hooks for verifying heap from generated code
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18649
diff
changeset
|
143 } |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
144 } else if (n instanceof MonitorEnterNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
145 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
146 monitorSnippets.lower((MonitorEnterNode) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
147 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
148 } else if (n instanceof MonitorExitNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
149 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
150 monitorSnippets.lower((MonitorExitNode) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
151 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
152 } else if (n instanceof G1PreWriteBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
153 writeBarrierSnippets.lower((G1PreWriteBarrier) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
154 } else if (n instanceof G1PostWriteBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
155 writeBarrierSnippets.lower((G1PostWriteBarrier) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
156 } else if (n instanceof G1ReferentFieldReadBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
157 writeBarrierSnippets.lower((G1ReferentFieldReadBarrier) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
158 } else if (n instanceof SerialWriteBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
159 writeBarrierSnippets.lower((SerialWriteBarrier) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
160 } else if (n instanceof SerialArrayRangeWriteBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
161 writeBarrierSnippets.lower((SerialArrayRangeWriteBarrier) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
162 } else if (n instanceof G1ArrayRangePreWriteBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
163 writeBarrierSnippets.lower((G1ArrayRangePreWriteBarrier) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
164 } else if (n instanceof G1ArrayRangePostWriteBarrier) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
165 writeBarrierSnippets.lower((G1ArrayRangePostWriteBarrier) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
166 } else if (n instanceof NewMultiArrayNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
167 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
168 newObjectSnippets.lower((NewMultiArrayNode) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
169 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
170 } else if (n instanceof LoadExceptionObjectNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
171 exceptionObjectSnippets.lower((LoadExceptionObjectNode) n, registers, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
172 } else if (n instanceof AssertionNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
173 assertionSnippets.lower((AssertionNode) n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
174 } else if (n instanceof IntegerDivNode || n instanceof IntegerRemNode || n instanceof UnsignedDivNode || n instanceof UnsignedRemNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
175 // Nothing to do for division nodes. The HotSpot signal handler catches divisions by |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
176 // zero and the MIN_VALUE / -1 cases. |
17200
56458afc02a3
Use common nodes for integer and floating point arithmetic.
Roland Schatz <roland.schatz@oracle.com>
parents:
17129
diff
changeset
|
177 } else if (n instanceof AbstractDeoptimizeNode || n instanceof UnwindNode || n instanceof RemNode) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
178 /* No lowering, we generate LIR directly for these nodes. */ |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
179 } else { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
180 super.lower(n, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
181 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
182 } |
14945
b14cb2d9253d
Make compression and uncompression explicit in the high level graph.
Roland Schatz <roland.schatz@oracle.com>
parents:
14863
diff
changeset
|
183 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
184 private void lowerInvoke(Invoke invoke, LoweringTool tool, StructuredGraph graph) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
185 if (invoke.callTarget() instanceof MethodCallTargetNode) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
186 MethodCallTargetNode callTarget = (MethodCallTargetNode) invoke.callTarget(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
187 NodeInputList<ValueNode> parameters = callTarget.arguments(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
188 ValueNode receiver = parameters.size() <= 0 ? null : parameters.get(0); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
189 GuardingNode receiverNullCheck = null; |
18490
ca81508f2a19
Generalize NULL handling to work on arbitrary pointers.
Roland Schatz <roland.schatz@oracle.com>
parents:
18487
diff
changeset
|
190 if (!callTarget.isStatic() && receiver.stamp() instanceof ObjectStamp && !StampTool.isPointerNonNull(receiver)) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
191 receiverNullCheck = createNullCheck(receiver, invoke.asNode(), tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
192 invoke.setGuard(receiverNullCheck); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
193 } |
16484
27f2ee618883
moved signatureToTypes(Signature signature, JavaType receiverType) from MetaUtil to be a default method in Signature
Doug Simon <doug.simon@oracle.com>
parents:
16330
diff
changeset
|
194 JavaType[] signature = callTarget.targetMethod().getSignature().toParameterTypes(callTarget.isStatic() ? null : callTarget.targetMethod().getDeclaringClass()); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
195 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
196 LoweredCallTargetNode loweredCallTarget = null; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
197 boolean isVirtualOrInterface = callTarget.invokeKind() == InvokeKind.Virtual || callTarget.invokeKind() == InvokeKind.Interface; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
198 if (InlineVTableStubs.getValue() && isVirtualOrInterface && (AlwaysInlineVTableStubs.getValue() || invoke.isPolymorphic())) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
199 HotSpotResolvedJavaMethod hsMethod = (HotSpotResolvedJavaMethod) callTarget.targetMethod(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
200 ResolvedJavaType receiverType = invoke.getReceiverType(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
201 if (hsMethod.isInVirtualMethodTable(receiverType)) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
202 Kind wordKind = runtime.getTarget().wordKind; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
203 ValueNode hub = createReadHub(graph, receiver, receiverNullCheck); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
204 |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
205 ReadNode metaspaceMethod = createReadVirtualMethod(graph, hub, hsMethod, receiverType); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
206 // We use LocationNode.ANY_LOCATION for the reads that access the |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
207 // compiled code entry as HotSpot does not guarantee they are final |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
208 // values. |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
209 ReadNode compiledEntry = graph.add(ReadNode.create(metaspaceMethod, ConstantLocationNode.create(ANY_LOCATION, runtime.getConfig().methodCompiledEntryOffset, graph), |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
210 StampFactory.forKind(wordKind), BarrierType.NONE)); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
211 |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
212 loweredCallTarget = graph.add(HotSpotIndirectCallTargetNode.create(metaspaceMethod, compiledEntry, parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(), |
16565
2b63e51e7789
Move invokeKind into CallTragetNode from its subclasses
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
16563
diff
changeset
|
213 CallingConvention.Type.JavaCall, callTarget.invokeKind())); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
214 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
215 graph.addBeforeFixed(invoke.asNode(), metaspaceMethod); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
216 graph.addAfterFixed(metaspaceMethod, compiledEntry); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
217 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
218 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
219 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
220 if (loweredCallTarget == null) { |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
221 loweredCallTarget = graph.add(HotSpotDirectCallTargetNode.create(parameters, invoke.asNode().stamp(), signature, callTarget.targetMethod(), CallingConvention.Type.JavaCall, |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
222 callTarget.invokeKind())); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
223 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
224 callTarget.replaceAndDelete(loweredCallTarget); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
225 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
226 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
227 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
228 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
229 protected Stamp loadStamp(Stamp stamp, Kind kind, boolean compressible) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
230 if (kind == Kind.Object && compressible && runtime.getConfig().useCompressedOops) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
231 return NarrowOopStamp.compressed((ObjectStamp) stamp, runtime.getConfig().getOopEncoding()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
232 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
233 return super.loadStamp(stamp, kind, compressible); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
234 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
235 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
236 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
237 protected ValueNode implicitLoadConvert(StructuredGraph graph, Kind kind, ValueNode value, boolean compressible) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
238 if (kind == Kind.Object && compressible && runtime.getConfig().useCompressedOops) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
239 return CompressionNode.uncompress(value, runtime.getConfig().getOopEncoding()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
240 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
241 return super.implicitLoadConvert(graph, kind, value, compressible); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
242 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
243 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
244 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
245 protected ValueNode staticFieldBase(StructuredGraph graph, ResolvedJavaField f) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
246 HotSpotResolvedJavaField field = (HotSpotResolvedJavaField) f; |
18361
6ac7e9c85be6
Split getEncoding into two methods.
Roland Schatz <roland.schatz@oracle.com>
parents:
18264
diff
changeset
|
247 JavaConstant base = field.getDeclaringClass().getJavaClass(); |
18264
e28aa8468d5e
converted HotSpotResolvedJavaField to an interface
Doug Simon <doug.simon@oracle.com>
parents:
18262
diff
changeset
|
248 return ConstantNode.forConstant(base, metaAccess, graph); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
249 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
250 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
251 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
252 protected ValueNode implicitStoreConvert(StructuredGraph graph, Kind kind, ValueNode value, boolean compressible) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
253 if (kind == Kind.Object && compressible && runtime.getConfig().useCompressedOops) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
254 return CompressionNode.compress(value, runtime.getConfig().getOopEncoding()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
255 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
256 return super.implicitStoreConvert(graph, kind, value, compressible); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
257 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
258 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
259 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
260 protected ValueNode createReadArrayComponentHub(StructuredGraph graph, ValueNode arrayHub, FixedNode anchor) { |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
261 LocationNode location = ConstantLocationNode.create(OBJ_ARRAY_KLASS_ELEMENT_KLASS_LOCATION, runtime.getConfig().arrayClassElementOffset, graph); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
262 /* |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
263 * Anchor the read of the element klass to the cfg, because it is only valid when arrayClass |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
264 * is an object class, which might not be the case in other parts of the compiled method. |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
265 */ |
18502
f38677340519
Add memory operations to MetaspacePointer
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
18490
diff
changeset
|
266 return graph.unique(FloatingReadNode.create(arrayHub, location, null, KlassPointerStamp.klassNonNull(), BeginNode.prevBegin(anchor))); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
267 } |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
268 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
269 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
270 protected void lowerUnsafeLoadNode(UnsafeLoadNode load, LoweringTool tool) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
271 StructuredGraph graph = load.graph(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
272 if (load.getGuardingCondition() == null && graph.getGuardsStage().ordinal() > StructuredGraph.GuardsStage.FLOATING_GUARDS.ordinal() && addReadBarrier(load)) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
273 unsafeLoadSnippets.lower(load, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
274 } else { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
275 super.lowerUnsafeLoadNode(load, tool); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
276 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
277 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
278 |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
279 private static void lowerLoadMethodNode(LoadMethodNode loadMethodNode) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
280 StructuredGraph graph = loadMethodNode.graph(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
281 HotSpotResolvedJavaMethod method = (HotSpotResolvedJavaMethod) loadMethodNode.getMethod(); |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
282 ReadNode metaspaceMethod = createReadVirtualMethod(graph, loadMethodNode.getHub(), method, loadMethodNode.getReceiverType()); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
283 graph.replaceFixed(loadMethodNode, metaspaceMethod); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
284 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
285 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
286 private void lowerStoreHubNode(StoreHubNode storeHub, StructuredGraph graph) { |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
287 WriteNode hub = createWriteHub(graph, storeHub.getObject(), storeHub.getValue()); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
288 graph.replaceFixed(storeHub, hub); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
289 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
290 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
291 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
292 protected BarrierType fieldInitializationBarrier(Kind entryKind) { |
18544
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
293 return (entryKind == Kind.Object && !runtime.getConfig().useDeferredInitBarriers) ? BarrierType.IMPRECISE : BarrierType.NONE; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
294 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
295 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
296 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
297 protected BarrierType arrayInitializationBarrier(Kind entryKind) { |
18544
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
298 return (entryKind == Kind.Object && !runtime.getConfig().useDeferredInitBarriers) ? BarrierType.PRECISE : BarrierType.NONE; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
299 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
300 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
301 private void lowerOSRStartNode(OSRStartNode osrStart) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
302 StructuredGraph graph = osrStart.graph(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
303 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS) { |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
304 StartNode newStart = graph.add(StartNode.create()); |
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
305 ParameterNode buffer = graph.unique(ParameterNode.create(0, StampFactory.forKind(runtime.getTarget().wordKind))); |
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
306 ForeignCallNode migrationEnd = graph.add(ForeignCallNode.create(foreignCalls, OSR_MIGRATION_END, buffer)); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
307 migrationEnd.setStateAfter(osrStart.stateAfter()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
308 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
309 newStart.setNext(migrationEnd); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
310 FixedNode next = osrStart.next(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
311 osrStart.setNext(null); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
312 migrationEnd.setNext(next); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
313 graph.setStart(newStart); |
15437
a3f5b484b6b5
Add implicitLoad/StoreConvert functions to HotSpotLoweringProvider interface.
Roland Schatz <roland.schatz@oracle.com>
parents:
15436
diff
changeset
|
314 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
315 // mirroring the calculations in c1_GraphBuilder.cpp (setup_osr_entry_block) |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
316 int localsOffset = (graph.method().getMaxLocals() - 1) * 8; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
317 for (OSRLocalNode osrLocal : graph.getNodes(OSRLocalNode.class)) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
318 int size = HIRFrameStateBuilder.stackSlots(osrLocal.getKind()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
319 int offset = localsOffset - (osrLocal.index() + size - 1) * 8; |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
320 IndexedLocationNode location = IndexedLocationNode.create(ANY_LOCATION, offset, ConstantNode.forLong(0, graph), graph, 1); |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
321 ReadNode load = graph.add(ReadNode.create(buffer, location, osrLocal.stamp(), BarrierType.NONE)); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
322 osrLocal.replaceAndDelete(load); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
323 graph.addBeforeFixed(migrationEnd, load); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
324 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
325 osrStart.replaceAtUsages(newStart); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
326 osrStart.safeDelete(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
327 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
328 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
329 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
330 private void lowerDynamicCounterNode(DynamicCounterNode n) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
331 StructuredGraph graph = n.graph(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
332 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.AFTER_FSA) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
333 BenchmarkCounters.lower(n, registers, runtime.getConfig(), runtime.getTarget().wordKind); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
334 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
335 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
336 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
337 static final class Exceptions { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
338 protected static final ArrayIndexOutOfBoundsException cachedArrayIndexOutOfBoundsException; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
339 protected static final NullPointerException cachedNullPointerException; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
340 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
341 static { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
342 cachedArrayIndexOutOfBoundsException = new ArrayIndexOutOfBoundsException(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
343 cachedArrayIndexOutOfBoundsException.setStackTrace(new StackTraceElement[0]); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
344 cachedNullPointerException = new NullPointerException(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
345 cachedNullPointerException.setStackTrace(new StackTraceElement[0]); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
346 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
347 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
348 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
349 public static final class RuntimeCalls { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
350 public static final ForeignCallDescriptor CREATE_NULL_POINTER_EXCEPTION = new ForeignCallDescriptor("createNullPointerException", NullPointerException.class); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
351 public static final ForeignCallDescriptor CREATE_OUT_OF_BOUNDS_EXCEPTION = new ForeignCallDescriptor("createOutOfBoundsException", ArrayIndexOutOfBoundsException.class, int.class); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
352 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
353 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
354 private void lowerBytecodeExceptionNode(BytecodeExceptionNode node) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
355 StructuredGraph graph = node.graph(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
356 if (graph.getGuardsStage() == StructuredGraph.GuardsStage.FLOATING_GUARDS) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
357 if (OmitHotExceptionStacktrace.getValue()) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
358 Throwable exception; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
359 if (node.getExceptionClass() == NullPointerException.class) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
360 exception = Exceptions.cachedNullPointerException; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
361 } else if (node.getExceptionClass() == ArrayIndexOutOfBoundsException.class) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
362 exception = Exceptions.cachedArrayIndexOutOfBoundsException; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
363 } else { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
364 throw GraalInternalError.shouldNotReachHere(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
365 } |
18262
f7d45e2426d4
converted HotSpotObjectConstant to an interface
Doug Simon <doug.simon@oracle.com>
parents:
18232
diff
changeset
|
366 FloatingNode exceptionNode = ConstantNode.forConstant(HotSpotObjectConstantImpl.forObject(exception), metaAccess, graph); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
367 graph.replaceFixedWithFloating(node, exceptionNode); |
16166
d69ede72299a
Expose loadStamp method in HotSpotLoweringProvider interface.
Roland Schatz <roland.schatz@oracle.com>
parents:
15889
diff
changeset
|
368 |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
369 } else { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
370 ForeignCallDescriptor descriptor; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
371 if (node.getExceptionClass() == NullPointerException.class) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
372 descriptor = RuntimeCalls.CREATE_NULL_POINTER_EXCEPTION; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
373 } else if (node.getExceptionClass() == ArrayIndexOutOfBoundsException.class) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
374 descriptor = RuntimeCalls.CREATE_OUT_OF_BOUNDS_EXCEPTION; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
375 } else { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
376 throw GraalInternalError.shouldNotReachHere(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
377 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
378 |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
379 ForeignCallNode foreignCallNode = graph.add(ForeignCallNode.create(foreignCalls, descriptor, node.stamp(), node.getArguments())); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
380 graph.replaceFixedWithFixed(node, foreignCallNode); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
381 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
382 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
383 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
384 |
18544
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
385 private boolean addReadBarrier(UnsafeLoadNode load) { |
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
386 if (runtime.getConfig().useG1GC && load.graph().getGuardsStage() == StructuredGraph.GuardsStage.FIXED_DEOPTS && load.object().getKind() == Kind.Object && load.accessKind() == Kind.Object && |
18490
ca81508f2a19
Generalize NULL handling to work on arbitrary pointers.
Roland Schatz <roland.schatz@oracle.com>
parents:
18487
diff
changeset
|
387 !StampTool.isPointerAlwaysNull(load.object())) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
388 ResolvedJavaType type = StampTool.typeOrNull(load.object()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
389 if (type != null && !type.isArray()) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
390 return true; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
391 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
392 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
393 return false; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
394 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
395 |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
396 private static ReadNode createReadVirtualMethod(StructuredGraph graph, ValueNode hub, HotSpotResolvedJavaMethod method, ResolvedJavaType receiverType) { |
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
397 return createReadVirtualMethod(graph, hub, method.vtableEntryOffset(receiverType)); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
398 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
399 |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
400 private static ReadNode createReadVirtualMethod(StructuredGraph graph, ValueNode hub, int vtableEntryOffset) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
401 assert vtableEntryOffset > 0; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
402 // We use LocationNode.ANY_LOCATION for the reads that access the vtable |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
403 // entry as HotSpot does not guarantee that this is a final value. |
18481
f91e40c4bb47
Create separate stamps for Klass* and Method*, and make them hotspot specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
18362
diff
changeset
|
404 Stamp methodStamp = MethodPointerStamp.method(); |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
405 ReadNode metaspaceMethod = graph.add(ReadNode.create(hub, ConstantLocationNode.create(ANY_LOCATION, vtableEntryOffset, graph), methodStamp, BarrierType.NONE)); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
406 return metaspaceMethod; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
407 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
408 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
409 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
410 protected ValueNode createReadHub(StructuredGraph graph, ValueNode object, GuardingNode guard) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
411 HotSpotVMConfig config = runtime.getConfig(); |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
412 LocationNode location = ConstantLocationNode.create(HUB_LOCATION, config.hubOffset, graph); |
18487
0f4813e0b4a9
Use asConstant() instead of asJavaConstant() where possible.
Roland Schatz <roland.schatz@oracle.com>
parents:
18481
diff
changeset
|
413 assert !object.isConstant() || object.isNullConstant(); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
414 |
18481
f91e40c4bb47
Create separate stamps for Klass* and Method*, and make them hotspot specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
18362
diff
changeset
|
415 KlassPointerStamp hubStamp = KlassPointerStamp.klassNonNull(); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
416 if (config.useCompressedClassPointers) { |
18481
f91e40c4bb47
Create separate stamps for Klass* and Method*, and make them hotspot specific.
Roland Schatz <roland.schatz@oracle.com>
parents:
18362
diff
changeset
|
417 hubStamp = hubStamp.compressed(config.getKlassEncoding()); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
418 } |
15437
a3f5b484b6b5
Add implicitLoad/StoreConvert functions to HotSpotLoweringProvider interface.
Roland Schatz <roland.schatz@oracle.com>
parents:
15436
diff
changeset
|
419 |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
420 FloatingReadNode memoryRead = graph.unique(FloatingReadNode.create(object, location, null, hubStamp, guard, BarrierType.NONE)); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
421 if (config.useCompressedClassPointers) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
422 return CompressionNode.uncompress(memoryRead, config.getKlassEncoding()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
423 } else { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
424 return memoryRead; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
425 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
426 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
427 |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
428 private WriteNode createWriteHub(StructuredGraph graph, ValueNode object, ValueNode value) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
429 HotSpotVMConfig config = runtime.getConfig(); |
18649
d138867d61c4
Remove getValueKind() from LocationNode.
Roland Schatz <roland.schatz@oracle.com>
parents:
18596
diff
changeset
|
430 LocationNode location = ConstantLocationNode.create(HUB_WRITE_LOCATION, config.hubOffset, graph); |
18487
0f4813e0b4a9
Use asConstant() instead of asJavaConstant() where possible.
Roland Schatz <roland.schatz@oracle.com>
parents:
18481
diff
changeset
|
431 assert !object.isConstant() || object.isNullConstant(); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
432 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
433 ValueNode writeValue = value; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
434 if (config.useCompressedClassPointers) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
435 writeValue = CompressionNode.compress(value, config.getKlassEncoding()); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
436 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
437 |
16895
06c15e88d383
added factory method to all Node classes; replaced Node classes instantiation with calls to factory methods; replaced identity tests on Node classes with ' == <node class>.getGenClass()' idiom
Doug Simon <doug.simon@oracle.com>
parents:
16565
diff
changeset
|
438 return graph.add(WriteNode.create(object, writeValue, location, BarrierType.NONE)); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
439 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
440 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
441 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
442 protected BarrierType fieldLoadBarrierType(ResolvedJavaField f) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
443 HotSpotResolvedJavaField loadField = (HotSpotResolvedJavaField) f; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
444 BarrierType barrierType = BarrierType.NONE; |
18544
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
445 if (runtime.getConfig().useG1GC && loadField.getKind() == Kind.Object && metaAccess.lookupJavaType(Reference.class).equals(loadField.getDeclaringClass()) && |
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
446 loadField.getName().equals("referent")) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
447 barrierType = BarrierType.PRECISE; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
448 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
449 return barrierType; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
450 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
451 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
452 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
453 protected int fieldOffset(ResolvedJavaField f) { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
454 HotSpotResolvedJavaField field = (HotSpotResolvedJavaField) f; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
455 return field.offset(); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
456 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
457 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
458 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
459 public int arrayScalingFactor(Kind kind) { |
18544
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
460 if (runtime.getConfig().useCompressedOops && kind == Kind.Object) { |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
461 return this.runtime.getTarget().getSizeInBytes(Kind.Int); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
462 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
463 return super.arrayScalingFactor(kind); |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
464 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
465 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
466 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
467 protected int arrayBaseOffset(Kind kind) { |
18515
8b87897f5b42
introduced HotSpotGraalRuntimeProvder interface
Doug Simon <doug.simon@oracle.com>
parents:
18502
diff
changeset
|
468 return runtime.getArrayBaseOffset(kind); |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
469 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
470 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
471 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
472 protected int arrayLengthOffset() { |
18544
7bbc9fc1e7f9
removed static accesses to HotSpotGraalRuntime from DefaultHotSpotLoweringProvider
Doug Simon <doug.simon@oracle.com>
parents:
18540
diff
changeset
|
473 return runtime.getConfig().arrayLengthOffset; |
16328
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
474 } |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
475 |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
476 @Override |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
477 protected LocationIdentity initLocationIdentity() { |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
478 return INIT_LOCATION; |
34ac3ddfd5ac
[SPARC] fixing findbug warnings
Stefan Anzinger <stefan.anzinger@gmail.com>
parents:
16166
diff
changeset
|
479 } |
12429
5124eeec1a7b
split HotSpotRuntime into separate provider implementations
Doug Simon <doug.simon@oracle.com>
parents:
diff
changeset
|
480 } |