Mercurial > hg > graal-compiler
diff graal/GraalCompiler/src/com/sun/c1x/ir/CheckCast.java @ 2600:f1bc67c2d453
new node layout: TypeCheck, RegisterFinalizer, Invoke, NewArray, NullCheck
author | Lukas Stadler <lukas.stadler@jku.at> |
---|---|
date | Thu, 05 May 2011 16:32:20 +0200 |
parents | 16b9a8b5ad39 |
children | 91d3952f7eb7 |
line wrap: on
line diff
--- a/graal/GraalCompiler/src/com/sun/c1x/ir/CheckCast.java Thu May 05 16:07:00 2011 +0200 +++ b/graal/GraalCompiler/src/com/sun/c1x/ir/CheckCast.java Thu May 05 16:32:20 2011 +0200 @@ -22,6 +22,7 @@ */ package com.sun.c1x.ir; +import com.oracle.graal.graph.*; import com.sun.c1x.debug.*; import com.sun.c1x.util.*; import com.sun.c1x.value.*; @@ -31,19 +32,21 @@ /** * The {@code CheckCast} instruction represents a {@link Bytecodes#CHECKCAST}. - * - * @author Ben L. Titzer */ public final class CheckCast extends TypeCheck { + private static final int INPUT_COUNT = 0; + private static final int SUCCESSOR_COUNT = 0; + /** * Creates a new CheckCast instruction. * @param targetClass the class being cast to * @param object the instruction producing the object * @param stateBefore the state before the cast + * @param graph */ - public CheckCast(RiType targetClass, Value targetClassInstruction, Value object, FrameState stateBefore) { - super(targetClass, targetClassInstruction, object, CiKind.Object, stateBefore); + public CheckCast(RiType targetClass, Value targetClassInstruction, Value object, FrameState stateBefore, Graph graph) { + super(targetClass, targetClassInstruction, object, CiKind.Object, stateBefore, INPUT_COUNT, SUCCESSOR_COUNT, graph); initFlag(Flag.NonNull, object.isNonNull()); } @@ -72,14 +75,14 @@ @Override public int valueNumber() { - return targetClass.isResolved() ? Util.hash1(Bytecodes.CHECKCAST, object) : 0; + return targetClass.isResolved() ? Util.hash1(Bytecodes.CHECKCAST, object()) : 0; } @Override public boolean valueEqual(Instruction i) { if (i instanceof CheckCast) { CheckCast o = (CheckCast) i; - return targetClass == o.targetClass && object == o.object; + return targetClass == o.targetClass && object() == o.object(); } return false; }