Mercurial > hg > graal-compiler
changeset 3124:573c8e2917ab
must not gvn checkcast instructions.
author | Thomas Wuerthinger <thomas@wuerthinger.net> |
---|---|
date | Thu, 30 Jun 2011 18:39:13 +0200 |
parents | 33f0052372c6 |
children | a2b425ca743e |
files | graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/CheckCast.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FixedGuard.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java |
diffstat | 5 files changed, 23 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/CheckCast.java Thu Jun 30 18:03:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/CheckCast.java Thu Jun 30 18:39:13 2011 +0200 @@ -70,15 +70,15 @@ v.visitCheckCast(this); } - @Override - public int valueNumber() { - return targetClass().isResolved() ? Util.hash1(Bytecodes.CHECKCAST, object()) : 0; - } - - @Override - public boolean valueEqual(Node i) { - return i instanceof CheckCast; - } +// @Override +// public int valueNumber() { +// return targetClass().isResolved() ? Util.hash1(Bytecodes.CHECKCAST, object()) : 0; +// } +// +// @Override +// public boolean valueEqual(Node i) { +// return i instanceof CheckCast; +// } @Override public void print(LogStream out) {
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FixedGuard.java Thu Jun 30 18:03:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/ir/FixedGuard.java Thu Jun 30 18:39:13 2011 +0200 @@ -47,8 +47,9 @@ inputs().set(super.inputCount() + INPUT_NODE, n); } - public FixedGuard(Graph graph) { + public FixedGuard(BooleanNode node, Graph graph) { super(CiKind.Illegal, INPUT_COUNT, SUCCESSOR_COUNT, graph); + setNode(node); } @Override @@ -63,7 +64,7 @@ @Override public Node copy(Graph into) { - return new FixedGuard(into); + return new FixedGuard(null, into); } @SuppressWarnings("unchecked")
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Thu Jun 30 18:03:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/GraphBuilderPhase.java Thu Jun 30 18:39:13 2011 +0200 @@ -720,8 +720,7 @@ private void genThrow(int bci) { Value exception = frameState.apop(); - FixedGuard node = new FixedGuard(graph); - node.setNode(new IsNonNull(exception, graph)); + FixedGuard node = new FixedGuard(new IsNonNull(exception, graph), graph); append(node); FixedNode entry = handleException(exception, bci); @@ -741,7 +740,9 @@ Constant typeInstruction = genTypeOrDeopt(RiType.Representation.ObjectHub, type, isInitialized, cpi); Value object = frameState.apop(); if (typeInstruction != null) { - frameState.apush(append(new CheckCast(typeInstruction, object, graph))); +// append(new FixedGuard(new InstanceOf(typeInstruction, object, graph), graph)); +// frameState.apush(object); + frameState.apush(new CheckCast(typeInstruction, object, graph)); } else { frameState.apush(appendConstant(CiConstant.NULL_OBJECT)); } @@ -1141,9 +1142,8 @@ if (ifNode.falseSuccessor() == prev) { FixedNode successor = ifNode.trueSuccessor(); BooleanNode condition = ifNode.compare(); - FixedGuard fixedGuard = new FixedGuard(graph); + FixedGuard fixedGuard = new FixedGuard(condition, graph); fixedGuard.setNext(successor); - fixedGuard.setNode(condition); ifNode.replaceAndDelete(fixedGuard); lastInstr = null; return fixed;
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Thu Jun 30 18:03:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/phases/InliningPhase.java Thu Jun 30 18:39:13 2011 +0200 @@ -97,8 +97,7 @@ concrete = profile.types[0].resolveMethodImpl(invoke.target); if (concrete != null && checkTargetConditions(concrete, iterations) && checkSizeConditions(concrete, invoke, profile, ratio)) { IsType isType = new IsType(invoke.receiver(), profile.types[0], compilation.graph); - FixedGuard guard = new FixedGuard(graph); - guard.setNode(isType); + FixedGuard guard = new FixedGuard(isType, graph); assert invoke.predecessors().size() == 1; invoke.predecessors().get(0).successors().replace(invoke, guard); guard.setNext(invoke); @@ -346,8 +345,7 @@ assert invoke.predecessors().size() == 1 : "size: " + invoke.predecessors().size(); FixedNodeWithNext pred; if (withReceiver) { - FixedGuard clipNode = new FixedGuard(compilation.graph); - clipNode.setNode(new IsNonNull(parameters[0], compilation.graph)); + FixedGuard clipNode = new FixedGuard(new IsNonNull(parameters[0], compilation.graph), compilation.graph); pred = clipNode; } else { pred = new Placeholder(compilation.graph);
--- a/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java Thu Jun 30 18:03:43 2011 +0200 +++ b/graal/com.oracle.max.graal.compiler/src/com/oracle/max/graal/compiler/target/amd64/AMD64LIRAssembler.java Thu Jun 30 18:39:13 2011 +0200 @@ -2110,6 +2110,10 @@ default: throw Util.shouldNotReachHere(); } + if (code == 0) TTY.println("deopt stub with code=" + code); + if (code == 0) { + throw new RuntimeException(); + } masm.movq(rscratch1, code); directCall(CiRuntimeCall.Deoptimize, stub.info); shouldNotReachHere();