Mercurial > hg > truffle
changeset 15026:d0294fa66a33
Backout 20b3db86b1fa.
author | Josef Eisl <josef.eisl@jku.at> |
---|---|
date | Mon, 07 Apr 2014 15:43:00 +0200 |
parents | 292353f2645c |
children | 0ab4e4a0e4bd |
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, 37 insertions(+), 31 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Mon Apr 07 15:04:14 2014 +0200 +++ b/graal/com.oracle.graal.baseline/src/com/oracle/graal/baseline/BaselineBytecodeParser.java Mon Apr 07 15:43:00 2014 +0200 @@ -354,12 +354,6 @@ } @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"); @@ -377,7 +371,7 @@ BciBlock trueBlock = currentBlock.getSuccessors().get(0); BciBlock falseBlock = currentBlock.getSuccessors().get(1); if (trueBlock == falseBlock) { - gen.emitJump(LabelRef.forSuccessor(lirGenRes.getLIR(), currentBlock, 0)); + appendGoto(createTarget(trueBlock, frameState)); return; } @@ -577,6 +571,12 @@ } @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,7 +584,6 @@ @Override protected void processBlock(BciBlock block) { - currentBlock = block; iterateBytecodesForBlock(block); } @@ -620,19 +619,17 @@ processBytecode(bci, opcode); - if (gen.hasBlockEnd(currentBlock)) { - break; - } - stream.next(); bci = stream.currentBCI(); if (bci < endBCI) { if (bci > block.endBci) { - assert block.numNormalSuccessors() == 1; - assert !block.getSuccessor(0).isExceptionEntry; - // we fell through to the next block, add a goto and break - genGoto(); + 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); + } break; } }
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Mon Apr 07 15:04:14 2014 +0200 +++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/alloc/LinearScan.java Mon Apr 07 15:43:00 2014 +0200 @@ -887,6 +887,7 @@ 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 Mon Apr 07 15:04:14 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/AbstractBytecodeParser.java Mon Apr 07 15:43:00 2014 +0200 @@ -505,7 +505,11 @@ frameState.storeLocal(index, append(genIntegerAdd(Kind.Int, x, y))); } - protected abstract void genGoto(); + private void genGoto() { + appendGoto(createTarget(currentBlock.getSuccessors().get(0), frameState)); + // assert currentBlock.numNormalSuccessors() == 1; + assert currentBlock.getSuccessors().size() == 1; + } protected abstract T genObjectEquals(T x, T y); @@ -900,12 +904,24 @@ protected abstract T append(T v); - protected boolean isNeverExecutedCode(double probability) { + private 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 Mon Apr 07 15:04:14 2014 +0200 +++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java Mon Apr 07 15:43:00 2014 +0200 @@ -562,12 +562,6 @@ } @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); } @@ -994,17 +988,15 @@ return currentGraph.add(new DeoptimizeNode(InvalidateReprofile, UnreachedCode)); } + @Override protected FixedNode createTarget(double probability, BciBlock block, AbstractFrameStateBuilder<ValueNode> stateAfter) { - assert probability >= 0 && probability <= 1.01 : probability; - if (isNeverExecutedCode(probability)) { - return (FixedNode) genDeoptimization(); - } else { - assert block != null; - return createTarget(block, stateAfter); - } + ValueNode fixed = super.createTarget(probability, block, stateAfter); + assert fixed instanceof FixedNode; + return (FixedNode) fixed; } + @Override protected FixedNode createTarget(BciBlock block, AbstractFrameStateBuilder<ValueNode> abstractState) { assert abstractState instanceof HIRFrameStateBuilder; HIRFrameStateBuilder state = (HIRFrameStateBuilder) abstractState;