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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6a6291c31657 Add LocationMarker.
Josef Eisl <josef.eisl@jku.at>
parents: 18443
diff changeset
167 }
6a6291c31657 Add LocationMarker.
Josef Eisl <josef.eisl@jku.at>
parents: 18443
diff changeset
168 }
6a6291c31657 Add LocationMarker.
Josef Eisl <josef.eisl@jku.at>
parents: 18443
diff changeset
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
d0294fa66a33 Backout 20b3db86b1fa.
Josef Eisl <josef.eisl@jku.at>
parents: 15011
diff changeset
775 if (block.numNormalSuccessors() == 1) {
d0294fa66a33 Backout 20b3db86b1fa.
Josef Eisl <josef.eisl@jku.at>
parents: 15011
diff changeset
776 assert !block.getSuccessor(0).isExceptionEntry;
d0294fa66a33 Backout 20b3db86b1fa.
Josef Eisl <josef.eisl@jku.at>
parents: 15011
diff changeset
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
d0294fa66a33 Backout 20b3db86b1fa.
Josef Eisl <josef.eisl@jku.at>
parents: 15011
diff changeset
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 }