Mercurial > hg > graal-compiler
changeset 14973:20b3db86b1fa
AbstractBytecodeParser: remove createTarget.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Fri, 04 Apr 2014 12:49:26 +0200 |
parents | 0e111aab730c |
children | 6270e260c23b |
files | graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java |
diffstat | 4 files changed, 31 insertions(+), 37 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Fri Apr 04 12:45:58 2014 +0200 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Fri Apr 04 12:49:26 2014 +0200 @@ -354,6 +354,12 @@ } @Override + protected void genGoto() { + assert currentBlock.numNormalSuccessors() == 1; + gen.emitJump(LabelRef.forSuccessor(lirGenRes.getLIR(), currentBlock, 0)); + } + + @Override protected Value genObjectEquals(Value x, Value y) { // TODO Auto-generated method stub throw GraalInternalError.unimplemented("Auto-generated method stub"); @@ -371,7 +377,7 @@ BciBlock trueBlock = currentBlock.getSuccessors().get(0); BciBlock falseBlock = currentBlock.getSuccessors().get(1); if (trueBlock == falseBlock) { - appendGoto(createTarget(trueBlock, frameState)); + gen.emitJump(LabelRef.forSuccessor(lirGenRes.getLIR(), currentBlock, 0)); return; } @@ -571,12 +577,6 @@ } @Override - protected Value createTarget(BciBlock trueBlock, AbstractFrameStateBuilder<Value> state) { - // TODO Auto-generated method stub - throw GraalInternalError.unimplemented("Auto-generated method stub"); - } - - @Override protected Value createBlockTarget(double probability, BciBlock bciBlock, AbstractFrameStateBuilder<Value> stateAfter) { // TODO Auto-generated method stub throw GraalInternalError.unimplemented("Auto-generated method stub"); @@ -584,6 +584,7 @@ @Override protected void processBlock(BciBlock block) { + currentBlock = block; iterateBytecodesForBlock(block); } @@ -619,17 +620,19 @@ processBytecode(bci, opcode); + if (gen.hasBlockEnd(currentBlock)) { + break; + } + stream.next(); bci = stream.currentBCI(); if (bci < endBCI) { if (bci > block.endBci) { - if (block.numNormalSuccessors() == 1) { - assert !block.getSuccessor(0).isExceptionEntry; - // we fell through to the next block, add a goto and break - LabelRef label = LabelRef.forSuccessor(lirGenRes.getLIR(), block.getSuccessor(0), 0); - gen.emitJump(label); - } + assert block.numNormalSuccessors() == 1; + assert !block.getSuccessor(0).isExceptionEntry; + // we fell through to the next block, add a goto and break + genGoto(); break; } }
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Fri Apr 04 12:45:58 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Fri Apr 04 12:49:26 2014 +0200 @@ -887,7 +887,6 @@ private static NodeLIRBuilder getNodeLIRGeneratorFromDebugContext() { if (Debug.isEnabled()) { NodeLIRBuilder lirGen = Debug.contextLookup(NodeLIRBuilder.class); - assert lirGen != null; return lirGen; } return null;
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Fri Apr 04 12:45:58 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Fri Apr 04 12:49:26 2014 +0200 @@ -505,11 +505,7 @@ frameState.storeLocal(index, append(genIntegerAdd(Kind.Int, x, y))); } - private void genGoto() { - appendGoto(createTarget(currentBlock.getSuccessors().get(0), frameState)); - // assert currentBlock.numNormalSuccessors() == 1; - assert currentBlock.getSuccessors().size() == 1; - } + protected abstract void genGoto(); protected abstract T genObjectEquals(T x, T y); @@ -911,24 +907,12 @@ protected abstract T append(T v); - private boolean isNeverExecutedCode(double probability) { + protected boolean isNeverExecutedCode(double probability) { return probability == 0 && optimisticOpts.removeNeverExecutedCode() && entryBCI == StructuredGraph.INVOCATION_ENTRY_BCI; } protected abstract T genDeoptimization(); - protected T createTarget(double probability, BciBlock block, AbstractFrameStateBuilder<T> stateAfter) { - assert probability >= 0 && probability <= 1.01 : probability; - if (isNeverExecutedCode(probability)) { - return genDeoptimization(); - } else { - assert block != null; - return createTarget(block, stateAfter); - } - } - - protected abstract T createTarget(BciBlock trueBlock, AbstractFrameStateBuilder<T> state); - /** * Returns a block begin node with the specified state. If the specified probability is 0, the * block deoptimizes immediately.
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Apr 04 12:45:58 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Fri Apr 04 12:49:26 2014 +0200 @@ -569,6 +569,12 @@ } @Override + protected void genGoto() { + appendGoto(createTarget(currentBlock.getSuccessors().get(0), frameState)); + assert currentBlock.numNormalSuccessors() == 1; + } + + @Override protected ValueNode genObjectEquals(ValueNode x, ValueNode y) { return new ObjectEqualsNode(x, y); } @@ -1007,15 +1013,17 @@ return currentGraph.add(new DeoptimizeNode(InvalidateReprofile, UnreachedCode)); } - @Override protected FixedNode createTarget(double probability, BciBlock block, AbstractFrameStateBuilder<ValueNode> stateAfter) { - ValueNode fixed = super.createTarget(probability, block, stateAfter); - assert fixed instanceof FixedNode; - return (FixedNode) fixed; + assert probability >= 0 && probability <= 1.01 : probability; + if (isNeverExecutedCode(probability)) { + return (FixedNode) genDeoptimization(); + } else { + assert block != null; + return createTarget(block, stateAfter); + } } - @Override protected FixedNode createTarget(BciBlock block, AbstractFrameStateBuilder<ValueNode> abstractState) { assert abstractState instanceof HIRFrameStateBuilder; HIRFrameStateBuilder state = (HIRFrameStateBuilder) abstractState;