Mercurial > hg > truffle
annotate graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java @ 19166:39e99cf01468
Move LinearScan to c.o.g.lir.alloc.lsra.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Thu, 05 Feb 2015 19:35:29 +0100 |
parents | b3b81dfff200 |
children | 938a290903f3 751489b93b2c |
rev | line source |
---|---|
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
1 /* |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
2 * Copyright (c) 2014, 2014, Oracle and/or its affiliates. All rights reserved. |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
4 * |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
5 * This code is free software; you can redistribute it and/or modify it |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
6 * under the terms of the GNU General Public License version 2 only, as |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
7 * published by the Free Software Foundation. |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
8 * |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
9 * This code is distributed in the hope that it will be useful, but WITHOUT |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
12 * version 2 for more details (a copy is included in the LICENSE file that |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
13 * accompanied this code). |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
14 * |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
15 * You should have received a copy of the GNU General Public License version |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
16 * 2 along with this work; if not, write to the Free Software Foundation, |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
18 * |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
20 * or visit www.oracle.com if you need additional information or have any |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
21 * questions. |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
22 */ |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
23 package com.oracle.graal.baseline; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
24 |
15259
d90e5c22ba55
Move GraalOptions to graal.compiler.common.
Josef Eisl <josef.eisl@jku.at>
parents:
15200
diff
changeset
|
25 import static com.oracle.graal.compiler.common.GraalOptions.*; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
26 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
27 import java.util.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
28 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
29 import com.oracle.graal.api.code.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
30 import com.oracle.graal.api.meta.*; |
15193
96bb07a5d667
Spit up and move GraalInternalError.
Josef Eisl <josef.eisl@jku.at>
parents:
15192
diff
changeset
|
31 import com.oracle.graal.compiler.common.*; |
19165
b3b81dfff200
Move ComputeBlockOrder to compiler.common and delete c.o.g.alloc project.
Josef Eisl <josef.eisl@jku.at>
parents:
19147
diff
changeset
|
32 import com.oracle.graal.compiler.common.alloc.*; |
15200
97eed257999b
Move Condition to graal.compiler.common.
Josef Eisl <josef.eisl@jku.at>
parents:
15193
diff
changeset
|
33 import com.oracle.graal.compiler.common.calc.*; |
15192
644dfe49c0f4
Move packages com.oracle.graal.cfg to com.oracle.graal.compiler.common.cfg.
Josef Eisl <josef.eisl@jku.at>
parents:
15157
diff
changeset
|
34 import com.oracle.graal.compiler.common.cfg.*; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
35 import com.oracle.graal.compiler.gen.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
36 import com.oracle.graal.compiler.target.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
37 import com.oracle.graal.debug.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
38 import com.oracle.graal.debug.Debug.Scope; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
39 import com.oracle.graal.java.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
40 import com.oracle.graal.java.BciBlockMapping.BciBlock; |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
41 import com.oracle.graal.java.BciBlockMapping.LocalLiveness; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
42 import com.oracle.graal.lir.*; |
15157
f4e31f06b019
Create com.oracle.graal.cfg project and move CFG related files.
Josef Eisl <josef.eisl@jku.at>
parents:
15128
diff
changeset
|
43 import com.oracle.graal.lir.StandardOp.BlockEndOp; |
19166
39e99cf01468
Move LinearScan to c.o.g.lir.alloc.lsra.
Josef Eisl <josef.eisl@jku.at>
parents:
19165
diff
changeset
|
44 import com.oracle.graal.lir.alloc.lsra.*; |
18443
1c92d437179b
FrameMapBuilder: move into package.
Josef Eisl <josef.eisl@jku.at>
parents:
18431
diff
changeset
|
45 import com.oracle.graal.lir.framemap.*; |
15292
a38d791982e1
Move LIRGenerationResult* to graal.lir.
Josef Eisl <josef.eisl@jku.at>
parents:
15267
diff
changeset
|
46 import com.oracle.graal.lir.gen.*; |
19031
beb7c10b7747
Move StackSlotAllocators into a package.
Josef Eisl <josef.eisl@jku.at>
parents:
19022
diff
changeset
|
47 import com.oracle.graal.lir.stackslotalloc.*; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
48 import com.oracle.graal.phases.*; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
49 |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
50 public class BaselineBytecodeParser extends AbstractBytecodeParser<Value, BaselineFrameStateBuilder> implements BytecodeParserTool { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
51 private Backend backend; |
15333
06ecedffb109
Use LIRGeneratorTool in Backend.
Josef Eisl <josef.eisl@jku.at>
parents:
15306
diff
changeset
|
52 protected LIRGeneratorTool gen; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
53 private LIRGenerationResult lirGenRes; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
54 private BytecodeLIRBuilder lirBuilder; |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
55 @SuppressWarnings("unused") private BciBlock[] loopHeaders; |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
56 private LocalLiveness liveness; |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
57 private BciBlockBitMap blockVisited; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
58 |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
59 private static class BciBlockBitMap { |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
60 BitSet bitSet; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
61 |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
62 public BciBlockBitMap(BciBlockMapping blockMap) { |
18820
ade7699e160e
Calculate blocks immediately in correct order.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18817
diff
changeset
|
63 bitSet = new BitSet(blockMap.getBlocks().length); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
64 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
65 |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
66 public boolean get(BciBlock block) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
67 return bitSet.get(block.getId()); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
68 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
69 |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
70 public void set(BciBlock block) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
71 bitSet.set(block.getId()); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
72 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
73 } |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
74 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
75 public BaselineBytecodeParser(MetaAccessProvider metaAccess, ResolvedJavaMethod method, GraphBuilderConfiguration graphBuilderConfig, OptimisticOptimizations optimisticOpts, |
18920
4af661af76fd
Restructuring in the GraphBuilder to have less fields in the phase instance.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18918
diff
changeset
|
76 BaselineFrameStateBuilder frameState, Backend backend) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
77 |
18920
4af661af76fd
Restructuring in the GraphBuilder to have less fields in the phase instance.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18918
diff
changeset
|
78 super(metaAccess, method, graphBuilderConfig, optimisticOpts); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
79 this.backend = backend; |
18920
4af661af76fd
Restructuring in the GraphBuilder to have less fields in the phase instance.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18918
diff
changeset
|
80 this.setCurrentFrameState(frameState); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
81 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
82 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
83 public LIRGenerationResult getLIRGenerationResult() { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
84 return lirGenRes; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
85 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
86 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
87 protected void build() { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
88 if (PrintProfilingInformation.getValue()) { |
16480
10c12d09a8d2
moved format(String format, JavaMethod method) from MetaUtil to be a default method in JavaMethod
Doug Simon <doug.simon@oracle.com>
parents:
16094
diff
changeset
|
89 TTY.println("Profiling info for " + method.format("%H.%n(%p)")); |
16490
cac0a7d1c325
moved profileToString(ProfilingInfo info, ResolvedJavaMethod method, String sep) from MetaUtil to be a default method in ProfilingInfo
Doug Simon <doug.simon@oracle.com>
parents:
16480
diff
changeset
|
90 TTY.println(MetaUtil.indent(profilingInfo.toString(method, CodeUtil.NEW_LINE), " ")); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
91 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
92 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
93 try (Indent indent = Debug.logAndIndent("build graph for %s", method)) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
94 |
15542
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
95 BciBlockMapping blockMap; |
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
96 try (Scope ds = Debug.scope("BciBlockMapping")) { |
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
97 // compute the block map, setup exception handlers and get the entrypoint(s) |
19147
609480dfa0d8
Create ExplodeLoop plugin prototype. Special sort for blocks from bci block map builder for explode loop methods. Graph builder plugin for customizing static field accesses. New Truffle option TruffleExcludeAssertions default true that excludes assertion code from being partial evaluated in the new partial evaluator.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
19033
diff
changeset
|
98 blockMap = BciBlockMapping.create(method, graphBuilderConfig.doLivenessAnalysis(), false); |
15542
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
99 } catch (Throwable e) { |
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
100 throw Debug.handle(e); |
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
101 } |
e46312e7ac27
BaselineBytecodeParser: add BciBlockMapping debug scope.
Josef Eisl <josef.eisl@jku.at>
parents:
15538
diff
changeset
|
102 |
18817
b51cfbc2bd07
Make allocation of loop header array in BciBlockMapping lazy.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18610
diff
changeset
|
103 loopHeaders = blockMap.getLoopHeaders(); |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
104 liveness = blockMap.liveness; |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
105 blockVisited = new BciBlockBitMap(blockMap); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
106 |
15267
98d45600222c
Add ResolvedJavaMethod.isSynchronized
Gilles Duboscq <duboscq@ssw.jku.at>
parents:
15259
diff
changeset
|
107 if (method.isSynchronized()) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
108 throw GraalInternalError.unimplemented("Handle synchronized methods"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
109 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
110 |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
111 frameState = new BaselineFrameStateBuilder(method); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
112 frameState.clearNonLiveLocals(blockMap.startBlock, liveness, true); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
113 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
114 currentBlock = blockMap.startBlock; |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
115 blockMap.startBlock.entryState = frameState; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
116 if (blockMap.startBlock.isLoopHeader) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
117 throw GraalInternalError.unimplemented("Handle start block as loop header"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
118 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
119 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
120 // add loops ? how do we add looks when we haven't parsed the bytecode? |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
121 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
122 // create the control flow graph |
15538
9398d53c15b4
Add BaselineControlFlowGraph.compute() factory.
Josef Eisl <josef.eisl@jku.at>
parents:
15470
diff
changeset
|
123 BaselineControlFlowGraph cfg = BaselineControlFlowGraph.compute(blockMap); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
124 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
125 // create the LIR |
18820
ade7699e160e
Calculate blocks immediately in correct order.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18817
diff
changeset
|
126 List<? extends AbstractBlock<?>> linearScanOrder = ComputeBlockOrder.computeLinearScanOrder(blockMap.getBlocks().length, blockMap.startBlock); |
ade7699e160e
Calculate blocks immediately in correct order.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18817
diff
changeset
|
127 List<? extends AbstractBlock<?>> codeEmittingOrder = ComputeBlockOrder.computeCodeEmittingOrder(blockMap.getBlocks().length, blockMap.startBlock); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
128 LIR lir = new LIR(cfg, linearScanOrder, codeEmittingOrder); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
129 |
18153
1c4a1a46e891
Introduce FrameMapBuilderImpl.
Josef Eisl <josef.eisl@jku.at>
parents:
18152
diff
changeset
|
130 RegisterConfig registerConfig = null; |
18154
448be95baef8
Add Backend.newFrameMapBuilder().
Josef Eisl <josef.eisl@jku.at>
parents:
18153
diff
changeset
|
131 FrameMapBuilder frameMapBuilder = backend.newFrameMapBuilder(registerConfig); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
132 TargetDescription target = backend.getTarget(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
133 CallingConvention cc = CodeUtil.getCallingConvention(backend.getProviders().getCodeCache(), CallingConvention.Type.JavaCallee, method, false); |
18153
1c4a1a46e891
Introduce FrameMapBuilderImpl.
Josef Eisl <josef.eisl@jku.at>
parents:
18152
diff
changeset
|
134 this.lirGenRes = backend.newLIRGenerationResult(lir, frameMapBuilder, method, null); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
135 this.gen = backend.newLIRGenerator(cc, lirGenRes); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
136 this.lirBuilder = backend.newBytecodeLIRBuilder(gen, this); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
137 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
138 try (Scope ds = Debug.scope("BackEnd", lir)) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
139 try (Scope s = Debug.scope("LIRGen", gen)) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
140 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
141 // possibly add all the arguments to slots in the local variable array |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
142 |
18820
ade7699e160e
Calculate blocks immediately in correct order.
Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
parents:
18817
diff
changeset
|
143 for (BciBlock block : blockMap.getBlocks()) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
144 emitBlock(block); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
145 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
146 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
147 gen.beforeRegisterAllocation(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
148 Debug.dump(lir, "After LIR generation"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
149 } catch (Throwable e) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
150 throw Debug.handle(e); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
151 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
152 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
153 try (Scope s = Debug.scope("Allocator")) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
154 if (backend.shouldAllocateRegisters()) { |
18152
ff694c40bdee
LIRGenerationResult: add buildFrameMap() and getFrameMap().
Josef Eisl <josef.eisl@jku.at>
parents:
17417
diff
changeset
|
155 LinearScan.allocate(target, lirGenRes); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
156 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
157 } |
19019
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
158 try (Scope s1 = Debug.scope("BuildFrameMap")) { |
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
159 // build frame map |
19022
859ee5dad32c
Pass StackSlotAllocator to FrameMapBuilder.buildFrameMap().
Josef Eisl <josef.eisl@jku.at>
parents:
19020
diff
changeset
|
160 lirGenRes.buildFrameMap(new SimpleStackSlotAllocator()); |
19019
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
161 Debug.dump(lir, "After FrameMap building"); |
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
162 } |
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
163 try (Scope s1 = Debug.scope("MarkLocations")) { |
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
164 if (backend.shouldAllocateRegisters()) { |
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
165 // currently we mark locations only if we do register allocation |
56e6b5756886
LinearScan: remove support for markFrameLocations.
Josef Eisl <josef.eisl@jku.at>
parents:
18863
diff
changeset
|
166 LocationMarker.markLocations(lir, lirGenRes.getFrameMap()); |
18610 | 167 } |
168 } | |
169 | |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
170 } catch (Throwable e) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
171 throw Debug.handle(e); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
172 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
173 } catch (Throwable e) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
174 throw Debug.handle(e); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
175 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
176 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
177 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
178 private void emitBlock(BciBlock b) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
179 if (lirGenRes.getLIR().getLIRforBlock(b) == null) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
180 for (BciBlock pred : b.getPredecessors()) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
181 if (!b.isLoopHeader() || !pred.isLoopEnd()) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
182 emitBlock(pred); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
183 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
184 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
185 processBlock(b); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
186 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
187 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
188 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
189 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
190 protected void handleUnresolvedLoadConstant(JavaType type) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
191 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
192 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
193 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
194 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
195 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
196 protected void handleUnresolvedCheckCast(JavaType type, Value object) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
197 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
198 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
199 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
200 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
201 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
202 protected void handleUnresolvedInstanceOf(JavaType type, Value object) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
203 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
204 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
205 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
206 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
207 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
208 protected void handleUnresolvedNewInstance(JavaType type) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
209 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
210 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
211 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
212 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
213 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
214 protected void handleUnresolvedNewObjectArray(JavaType type, Value length) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
215 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
216 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
217 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
218 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
219 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
220 protected void handleUnresolvedNewMultiArray(JavaType type, List<Value> dims) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
221 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
222 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
223 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
224 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
225 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
226 protected void handleUnresolvedLoadField(JavaField field, Value receiver) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
227 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
228 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
229 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
230 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
231 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
232 protected void handleUnresolvedStoreField(JavaField field, Value value, Value receiver) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
233 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
234 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
235 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
236 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
237 @Override |
18361
6ac7e9c85be6
Split getEncoding into two methods.
Roland Schatz <roland.schatz@oracle.com>
parents:
18189
diff
changeset
|
238 protected void handleUnresolvedExceptionType(JavaType type) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
239 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
240 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
241 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
242 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
243 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
244 protected Value genLoadIndexed(Value index, Value array, Kind kind) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
245 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
246 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
247 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
248 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
249 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
250 protected Value genStoreIndexed(Value array, Value index, Kind kind, Value value) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
251 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
252 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
253 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
254 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
255 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
256 protected Value genIntegerAdd(Kind kind, Value x, Value y) { |
18843
5e80dd2f1783
Extend emitMul, emitAdd and emitSub in ArithmeticLIRGenerator for explicitly requesting to set the flags register. (In AMD64 flags are set implicitly, but on SPARC it is not)
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
18820
diff
changeset
|
257 return gen.emitAdd(x, y, false); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
258 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
259 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
260 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
261 protected Value genIntegerSub(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
262 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
263 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
264 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
265 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
266 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
267 protected Value genIntegerMul(Kind kind, Value x, Value y) { |
18843
5e80dd2f1783
Extend emitMul, emitAdd and emitSub in ArithmeticLIRGenerator for explicitly requesting to set the flags register. (In AMD64 flags are set implicitly, but on SPARC it is not)
Stefan Anzinger <stefan.anzinger@oracle.com>
parents:
18820
diff
changeset
|
268 return gen.emitMul(x, y, false); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
269 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
270 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
271 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
272 protected Value genFloatAdd(Kind kind, Value x, Value y, boolean isStrictFP) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
273 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
274 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
275 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
276 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
277 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
278 protected Value genFloatSub(Kind kind, Value x, Value y, boolean isStrictFP) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
279 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
280 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
281 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
282 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
283 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
284 protected Value genFloatMul(Kind kind, Value x, Value y, boolean isStrictFP) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
285 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
286 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
287 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
288 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
289 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
290 protected Value genFloatDiv(Kind kind, Value x, Value y, boolean isStrictFP) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
291 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
292 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
293 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
294 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
295 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
296 protected Value genFloatRem(Kind kind, Value x, Value y, boolean isStrictFP) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
297 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
298 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
299 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
300 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
301 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
302 protected Value genIntegerDiv(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
303 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
304 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
305 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
306 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
307 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
308 protected Value genIntegerRem(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
309 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
310 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
311 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
312 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
313 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
314 protected Value genNegateOp(Value x) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
315 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
316 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
317 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
318 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
319 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
320 protected Value genLeftShift(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
321 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
322 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
323 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
324 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
325 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
326 protected Value genRightShift(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
327 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
328 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
329 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
330 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
331 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
332 protected Value genUnsignedRightShift(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
333 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
334 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
335 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
336 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
337 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
338 protected Value genAnd(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
339 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
340 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
341 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
342 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
343 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
344 protected Value genOr(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
345 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
346 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
347 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
348 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
349 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
350 protected Value genXor(Kind kind, Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
351 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
352 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
353 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
354 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
355 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
356 protected Value genNormalizeCompare(Value x, Value y, boolean isUnorderedLess) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
357 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
358 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
359 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
360 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
361 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
362 protected Value genFloatConvert(FloatConvert op, Value input) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
363 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
364 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
365 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
366 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
367 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
368 protected Value genNarrow(Value input, int bitCount) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
369 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
370 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
371 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
372 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
373 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
374 protected Value genSignExtend(Value input, int bitCount) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
375 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
376 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
377 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
378 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
379 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
380 protected Value genZeroExtend(Value input, int bitCount) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
381 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
382 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
383 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
384 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
385 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
386 protected Value genObjectEquals(Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
387 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
388 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
389 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
390 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
391 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
392 protected Value genIntegerEquals(Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
393 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
394 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
395 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
396 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
397 @Override |
14948
bc72e5ed9752
AbstractBytecodeParser: rename ifNode to genIf.
Josef Eisl <josef.eisl@jku.at>
parents:
14947
diff
changeset
|
398 protected void genIf(Value x, Condition cond, Value y) { |
14947
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
399 assert currentBlock.getSuccessors().size() == 2; |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
400 BciBlock trueBlock = currentBlock.getSuccessors().get(0); |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
401 BciBlock falseBlock = currentBlock.getSuccessors().get(1); |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
402 if (trueBlock == falseBlock) { |
15030
e098038093d5
AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
Josef Eisl <josef.eisl@jku.at>
parents:
15029
diff
changeset
|
403 genGoto(); |
14947
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
404 return; |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
405 } |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
406 |
16886
b61b88c9c103
Make handling of removeNeverExecutedCode more consistent
Tom Rodriguez <tom.rodriguez@oracle.com>
parents:
16490
diff
changeset
|
407 double probability = branchProbability(); |
14947
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
408 |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
409 LabelRef trueDestination = getSuccessor(0); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
410 LabelRef falseDestination = getSuccessor(1); |
14947
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
411 |
14971
63bc517c3543
BaselineCompiler: implement genIf.
Josef Eisl <josef.eisl@jku.at>
parents:
14962
diff
changeset
|
412 gen.emitCompareBranch(x.getKind(), x, y, cond, false, trueDestination, falseDestination, probability); |
14947
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
413 } |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
414 |
3825cf50cc5a
AbstractBytecodeParser: make ifNode abstract.
Josef Eisl <josef.eisl@jku.at>
parents:
14927
diff
changeset
|
415 @Override |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
416 protected Value genIntegerLessThan(Value x, Value y) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
417 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
418 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
419 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
420 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
421 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
422 protected Value genUnique(Value x) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
423 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
424 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
425 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
426 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
427 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
428 protected void genThrow() { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
429 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
430 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
431 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
432 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
433 @Override |
15837
6fe57ff3f02c
Rename methods to have consistent names, allow subclasses of bytecode parsers
Christian Wimmer <christian.wimmer@oracle.com>
parents:
15561
diff
changeset
|
434 protected Value createCheckCast(ResolvedJavaType type, Value object, JavaTypeProfile profileForTypeCheck, boolean b) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
435 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
436 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
437 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
438 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
439 @Override |
15837
6fe57ff3f02c
Rename methods to have consistent names, allow subclasses of bytecode parsers
Christian Wimmer <christian.wimmer@oracle.com>
parents:
15561
diff
changeset
|
440 protected Value createInstanceOf(ResolvedJavaType type, Value object, JavaTypeProfile profileForTypeCheck) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
441 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
442 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
443 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
444 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
445 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
446 protected Value genConditional(Value x) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
447 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
448 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
449 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
450 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
451 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
452 protected Value createNewInstance(ResolvedJavaType type, boolean fillContents) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
453 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
454 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
455 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
456 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
457 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
458 protected Value createNewArray(ResolvedJavaType elementType, Value length, boolean fillContents) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
459 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
460 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
461 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
462 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
463 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
464 protected Value createNewMultiArray(ResolvedJavaType type, List<Value> dims) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
465 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
466 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
467 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
468 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
469 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
470 protected Value genLoadField(Value receiver, ResolvedJavaField field) { |
15561
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
471 if (field.isStatic()) { |
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
472 Value classRef = lirBuilder.getClassConstant(field.getDeclaringClass()); |
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
473 long displacement = lirBuilder.getFieldOffset(field); |
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
474 Value address = gen.emitAddress(classRef, displacement, Value.ILLEGAL, 0); |
16094
c0b8d395368b
Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents:
15837
diff
changeset
|
475 LIRKind readKind = backend.getTarget().getLIRKind(field.getKind()); |
15561
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
476 LIRFrameState state = createFrameState(frameState); |
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
477 return gen.emitLoad(readKind, address, state); |
0fc035104370
Baseline: add support for getstatic.
Josef Eisl <josef.eisl@jku.at>
parents:
15559
diff
changeset
|
478 } |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
479 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
480 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
481 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
482 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
483 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
484 protected void emitNullCheck(Value receiver) { |
15559
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
485 gen.emitNullCheck(receiver, createFrameState(frameState)); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
486 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
487 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
488 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
489 protected void emitBoundsCheck(Value index, Value length) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
490 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
491 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
492 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
493 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
494 @Override |
15557
8a66b661ed49
BaselineBytecodeParser: initial genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15542
diff
changeset
|
495 protected Value genArrayLength(Value array) { |
8a66b661ed49
BaselineBytecodeParser: initial genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15542
diff
changeset
|
496 emitNullCheck(array); |
8a66b661ed49
BaselineBytecodeParser: initial genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15542
diff
changeset
|
497 long displacement = lirBuilder.getArrayLengthOffset(); |
8a66b661ed49
BaselineBytecodeParser: initial genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15542
diff
changeset
|
498 Value address = gen.emitAddress(array, displacement, Value.ILLEGAL, 0); |
16094
c0b8d395368b
Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents:
15837
diff
changeset
|
499 LIRKind readKind = backend.getTarget().getLIRKind(Kind.Int); |
15559
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
500 LIRFrameState state = createFrameState(frameState); |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
501 return gen.emitLoad(readKind, address, state); |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
502 } |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
503 |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
504 private LIRFrameState createFrameState(BaselineFrameStateBuilder state) { |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
505 LabelRef exceptionEdge = null; |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
506 BytecodeFrame caller = null; |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
507 boolean duringCall = false; |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
508 int numLocals = state.localsSize(); |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
509 int numStack = state.stackSize(); |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
510 int numLocks = state.lockDepth(); |
18189
e75eb4720d4e
Introduce new JavaValue interface for use in debug info.
Roland Schatz <roland.schatz@oracle.com>
parents:
18187
diff
changeset
|
511 JavaValue[] values = new JavaValue[numLocals + numStack + numLocks]; |
15559
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
512 |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
513 for (int i = 0; i < numLocals; i++) { |
18189
e75eb4720d4e
Introduce new JavaValue interface for use in debug info.
Roland Schatz <roland.schatz@oracle.com>
parents:
18187
diff
changeset
|
514 values[i] = (JavaValue) state.localAt(i); |
15559
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
515 } |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
516 |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
517 for (int i = 0; i < numStack; i++) { |
18189
e75eb4720d4e
Introduce new JavaValue interface for use in debug info.
Roland Schatz <roland.schatz@oracle.com>
parents:
18187
diff
changeset
|
518 values[numLocals + i] = (JavaValue) state.stackAt(i); |
15559
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
519 } |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
520 |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
521 for (int i = 0; i < numStack; i++) { |
18189
e75eb4720d4e
Introduce new JavaValue interface for use in debug info.
Roland Schatz <roland.schatz@oracle.com>
parents:
18187
diff
changeset
|
522 values[numLocals + numStack + i] = (JavaValue) state.lockAt(i); |
15559
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
523 } |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
524 |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
525 BytecodeFrame frame = new BytecodeFrame(caller, method, bci(), state.rethrowException(), duringCall, values, numLocals, numStack, numLocks); |
9440ab398f49
BaselineCompiler: implement genArrayLength().
Josef Eisl <josef.eisl@jku.at>
parents:
15557
diff
changeset
|
526 return new LIRFrameState(frame, null, exceptionEdge); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
527 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
528 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
529 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
530 protected Value genStoreField(Value receiver, ResolvedJavaField field, Value value) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
531 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
532 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
533 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
534 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
535 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
536 protected void genInvokeStatic(JavaMethod target) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
537 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
538 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
539 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
540 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
541 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
542 protected void genInvokeInterface(JavaMethod target) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
543 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
544 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
545 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
546 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
547 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
548 protected void genInvokeDynamic(JavaMethod target) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
549 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
550 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
551 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
552 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
553 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
554 protected void genInvokeVirtual(JavaMethod target) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
555 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
556 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
557 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
558 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
559 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
560 protected void genInvokeSpecial(JavaMethod target) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
561 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
562 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
563 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
564 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
565 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
566 protected void genReturn(Value x) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
567 gen.emitReturn(x); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
568 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
569 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
570 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
571 protected Value genMonitorEnter(Value x) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
572 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
573 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
574 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
575 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
576 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
577 protected Value genMonitorExit(Value x, Value returnValue) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
578 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
579 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
580 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
581 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
582 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
583 protected void genJsr(int dest) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
584 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
585 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
586 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
587 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
588 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
589 protected void genRet(int localIndex) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
590 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
591 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
592 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
593 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
594 @Override |
15028
7ee9decb2784
AbstractBytecodeParser: rework genIntegerSwitch.
Josef Eisl <josef.eisl@jku.at>
parents:
15027
diff
changeset
|
595 protected void genIntegerSwitch(Value value, ArrayList<BciBlock> actualSuccessors, int[] keys, double[] keyProbabilities, int[] keySuccessors) { |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
596 // TODO Auto-generated method stub |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
597 throw GraalInternalError.unimplemented("Auto-generated method stub"); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
598 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
599 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
600 @Override |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
18163
diff
changeset
|
601 protected Value appendConstant(JavaConstant constant) { |
17417
2915eff532d4
Fix code generation problem with sub-int Constants.
Roland Schatz <roland.schatz@oracle.com>
parents:
17314
diff
changeset
|
602 return gen.emitLoadConstant(constant.getLIRKind(), constant); |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
603 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
604 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
605 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
606 protected Value append(Value v) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
607 return v; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
608 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
609 |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
610 private void createTarget(BciBlock block) { |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
611 assert block != null && frameState != null; |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
612 assert !block.isExceptionEntry || frameState.stackSize() == 1; |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
613 |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
614 if (!blockVisited.get(block)) { |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
615 /* |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
616 * This is the first time we see this block as a branch target. Create and return a |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
617 * placeholder that later can be replaced with a MergeNode when we see this block again. |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
618 */ |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
619 blockVisited.set(block); |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
620 if (block.getPredecessorCount() > 1) { |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
621 /* |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
622 * If there are more than one predecessors we have to ensure that we are not passing |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
623 * constants to the new framestate otherwise we will get interfacing problems. |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
624 */ |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
625 moveConstantsToVariables(); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
626 } |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
627 block.entryState = frameState.copy(); |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
628 block.entryState.clearNonLiveLocals(block, liveness, true); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
629 |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
630 Debug.log("createTarget %s: first visit", block); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
631 return; |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
632 } |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
633 |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
634 // We already saw this block before, so we have to merge states. |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
635 if (!((BaselineFrameStateBuilder) block.entryState).isCompatibleWith(frameState)) { |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
636 throw new BailoutException("stacks do not match; bytecodes would not verify"); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
637 } |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
638 |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
639 if (block.isLoopHeader) { |
15112
257ec29335cf
BaselineCompiler: add basic loop support.
Josef Eisl <josef.eisl@jku.at>
parents:
15110
diff
changeset
|
640 assert currentBlock == null || currentBlock.getId() >= block.getId() : "must be backward branch"; |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
641 if (currentBlock != null && currentBlock.numNormalSuccessors() == 1) { |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
642 // this is the only successor of the current block so we can adjust |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
643 adaptFramestate((BaselineFrameStateBuilder) block.entryState); |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
644 return; |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
645 } |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
646 GraalInternalError.unimplemented("Loops not yet supported"); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
647 } |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
648 assert currentBlock == null || currentBlock.getId() < block.getId() : "must not be backward branch"; |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
649 |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
650 /* |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
651 * This is the second time we see this block. Create the actual MergeNode and the End Node |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
652 * for the already existing edge. For simplicity, we leave the placeholder in the graph and |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
653 * just append the new nodes after the placeholder. |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
654 */ |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
655 if (currentBlock != null && currentBlock.numNormalSuccessors() == 1) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
656 // this is the only successor of the current block so we can adjust |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
657 adaptFramestate((BaselineFrameStateBuilder) block.entryState); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
658 return; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
659 } |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
660 GraalInternalError.unimplemented("second block visit not yet implemented"); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
661 |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
662 // merge frame states e.g. block.entryState.merge(mergeNode, target.state); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
663 |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
664 Debug.log("createTarget %s: merging state", block); |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
665 } |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
666 |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
667 private void moveConstantsToVariables() { |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
668 Debug.log("moveConstantsToVariables: framestate before: %s", frameState); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
669 for (int i = 0; i < frameState.stackSize(); i++) { |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
670 Value src = frameState.stackAt(i); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
18163
diff
changeset
|
671 if (src instanceof JavaConstant) { |
16094
c0b8d395368b
Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents:
15837
diff
changeset
|
672 AllocatableValue dst = gen.newVariable(src.getLIRKind()); |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
673 gen.emitMove(dst, src); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
674 frameState.storeStack(i, dst); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
675 Debug.log("introduce new variabe %s for stackslot %d (end of block %s", dst, i, currentBlock); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
676 } |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
677 } |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
678 for (int i = 0; i < frameState.localsSize(); i++) { |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
679 Value src = frameState.localAt(i); |
18187
9619ba4daf4c
Rename Constant to JavaConstant.
Roland Schatz <roland.schatz@oracle.com>
parents:
18163
diff
changeset
|
680 if (src instanceof JavaConstant) { |
16094
c0b8d395368b
Introduce LIRKind to accurately track oop references in backend.
Roland Schatz <roland.schatz@oracle.com>
parents:
15837
diff
changeset
|
681 AllocatableValue dst = gen.newVariable(src.getLIRKind()); |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
682 gen.emitMove(dst, src); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
683 frameState.storeLocal(i, dst); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
684 Debug.log("introduce new variabe %s for local %d (end of block %s", dst, i, currentBlock); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
685 } |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
686 } |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
687 Debug.log("moveConstantsToVariables: framestate after: %s", frameState); |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
688 } |
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
689 |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
690 private static void adaptValues(Value dst, Value src, PhiResolver resolver) { |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
691 if (dst == null) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
692 return; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
693 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
694 assert src != null : "Source is null but Destination is not!"; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
695 |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
696 if (!dst.equals(src)) { |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
697 resolver.move(dst, src); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
698 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
699 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
700 |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
701 private void adaptFramestate(BaselineFrameStateBuilder other) { |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
702 assert frameState.isCompatibleWith(other) : "framestates not compatible!"; |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
703 PhiResolver resolver = new PhiResolver(gen); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
704 for (int i = 0; i < frameState.stackSize(); i++) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
705 Value src = frameState.stackAt(i); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
706 Value dst = other.stackAt(i); |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
707 adaptValues(dst, src, resolver); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
708 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
709 for (int i = 0; i < frameState.localsSize(); i++) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
710 Value src = frameState.localAt(i); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
711 Value dst = other.localAt(i); |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
712 adaptValues(dst, src, resolver); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
713 } |
15127
dc774fe9d0e0
BaselineCompiler: use PhiResolver.
Josef Eisl <josef.eisl@jku.at>
parents:
15112
diff
changeset
|
714 resolver.dispose(); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
715 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
716 |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
717 protected void processBlock(BciBlock block) { |
15306
7e0563f0d249
Rename LIRFrameStateBuilder to BaselineFrameStateBuilder.
Josef Eisl <josef.eisl@jku.at>
parents:
15305
diff
changeset
|
718 frameState = (BaselineFrameStateBuilder) block.entryState; |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
719 setCurrentFrameState(frameState); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
720 currentBlock = block; |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
721 iterateBytecodesForBlock(block); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
722 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
723 |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
724 private boolean isBlockEnd() { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
725 List<LIRInstruction> l = gen.getResult().getLIR().getLIRforBlock(currentBlock); |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
726 if (l.isEmpty()) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
727 return false; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
728 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
729 return l.get(l.size() - 1) instanceof BlockEndOp; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
730 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
731 |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
732 @Override |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
733 protected void iterateBytecodesForBlock(BciBlock block) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
734 gen.doBlockStart(block); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
735 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
736 if (block == gen.getResult().getLIR().getControlFlowGraph().getStartBlock()) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
737 assert block.getPredecessorCount() == 0; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
738 lirBuilder.emitPrologue(method); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
739 } else { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
740 assert block.getPredecessorCount() > 0; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
741 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
742 |
15128
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
743 if (block.isLoopHeader) { |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
744 /* |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
745 * We need to preserve the frame state builder of the loop header so that we can merge |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
746 * values for phi functions, so make a copy of it. |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
747 */ |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
748 block.entryState = frameState.copy(); |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
749 |
d0e2d565176f
BaselineCompiler: copy frame state builder at loop headers.
Josef Eisl <josef.eisl@jku.at>
parents:
15127
diff
changeset
|
750 } |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
751 int endBCI = stream.endBCI(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
752 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
753 stream.setBCI(block.startBci); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
754 int bci = block.startBci; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
755 BytecodesParsed.add(block.endBci - bci); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
756 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
757 while (bci < endBCI) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
758 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
759 // read the opcode |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
760 int opcode = stream.currentBC(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
761 // traceState(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
762 traceInstruction(bci, opcode, bci == block.startBci); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
763 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
764 processBytecode(bci, opcode); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
765 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
766 stream.next(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
767 bci = stream.currentBCI(); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
768 |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
769 if (isBlockEnd()) { |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
770 break; |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
771 } |
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
772 |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
773 if (bci < endBCI) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
774 if (bci > block.endBci) { |
15026 | 775 if (block.numNormalSuccessors() == 1) { |
776 assert !block.getSuccessor(0).isExceptionEntry; | |
777 // we fell through to the next block, add a goto and break | |
15030
e098038093d5
AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
Josef Eisl <josef.eisl@jku.at>
parents:
15029
diff
changeset
|
778 genGoto(); |
15026 | 779 } |
14927
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
780 break; |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
781 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
782 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
783 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
784 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
785 assert LIR.verifyBlock(gen.getResult().getLIR(), block); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
786 gen.doBlockEnd(block); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
787 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
788 |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
789 public void storeLocal(int i, Value x) { |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
790 frameState.storeLocal(i, x); |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
791 } |
93de07975ea9
Create dedicated BaselineBytecodeParser, BytecodeLIRBuilder and amd64 specialization.
Josef Eisl <josef.eisl@jku.at>
parents:
diff
changeset
|
792 |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
793 LabelRef getSuccessor(int index) { |
15110
ca92d97bb0d6
BaselineCompiler: do not pass constants to blocks with multiple predecessors.
Josef Eisl <josef.eisl@jku.at>
parents:
15107
diff
changeset
|
794 createTarget(currentBlock.getSuccessor(index)); |
15034
136d1f3f1371
BaselineCompiler: implement framestate merge.
Josef Eisl <josef.eisl@jku.at>
parents:
15033
diff
changeset
|
795 return LabelRef.forSuccessor(lirGenRes.getLIR(), currentBlock, index); |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
796 } |
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
797 |
15030
e098038093d5
AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
Josef Eisl <josef.eisl@jku.at>
parents:
15029
diff
changeset
|
798 @Override |
e098038093d5
AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
Josef Eisl <josef.eisl@jku.at>
parents:
15029
diff
changeset
|
799 protected void genGoto() { |
15033
c6cf3474351c
BaselineBytecodeParser: add createTarget.
Josef Eisl <josef.eisl@jku.at>
parents:
15030
diff
changeset
|
800 gen.emitJump(getSuccessor(0)); |
15030
e098038093d5
AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
Josef Eisl <josef.eisl@jku.at>
parents:
15029
diff
changeset
|
801 } |
e098038093d5
AbstractBytecodeParser: move createTarget to GraphBuilderPhase.
Josef Eisl <josef.eisl@jku.at>
parents:
15029
diff
changeset
|
802 |
18163
c88ab4f1f04a
re-enabled Checkstyle with the release of 6.0 that supports Java 8; fixed existing Checkstyle warnings
Doug Simon <doug.simon@oracle.com>
parents:
18154
diff
changeset
|
803 } |