changeset 7098:e23980f4a890

Cleanup of Kind class: remove isXxx methods
author Christian Wimmer <christian.wimmer@oracle.com>
date Thu, 29 Nov 2012 11:27:23 -0800
parents 6644cecbd3a7
children 3656236c7d27
files graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestMetaAccessProvider.java graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInstalledCode.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/NewObjectSnippets.java graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerAddNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowThanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetIntrinsificationPhase.java graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetTemplate.java graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/WordTypeRewriterPhase.java graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/BitScanForwardNode.java graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/BitScanReverseNode.java graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/ReverseBytesNode.java
diffstat 38 files changed, 120 insertions(+), 228 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestMetaAccessProvider.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestMetaAccessProvider.java	Thu Nov 29 11:27:23 2012 -0800
@@ -223,7 +223,7 @@
     @Test
     public void lookupJavaTypeConstantTest() {
         for (Constant c : constants) {
-            if (c.getKind().isObject() && !c.isNull()) {
+            if (c.getKind() == Kind.Object && !c.isNull()) {
                 Object o = c.asObject();
                 ResolvedJavaType type = runtime.lookupJavaType(c);
                 assertNotNull(type);
@@ -240,7 +240,7 @@
             for (Constant c2 : constants) {
                 // test symmetry
                 assertEquals(runtime.constantEquals(c1, c2), runtime.constantEquals(c2, c1));
-                if (!c1.getKind().isObject() && !c2.getKind().isObject()) {
+                if (c1.getKind() != Kind.Object && c2.getKind() != Kind.Object) {
                     assertEquals(c1.equals(c2), runtime.constantEquals(c2, c1));
                 }
             }
@@ -250,7 +250,7 @@
     @Test
     public void lookupArrayLengthTest() {
         for (Constant c : constants) {
-            if (!c.getKind().isObject() || c.isNull() || !c.asObject().getClass().isArray()) {
+            if (c.getKind() != Kind.Object || c.isNull() || !c.asObject().getClass().isArray()) {
                 try {
                     int length = runtime.lookupArrayLength(c);
                     fail("Expected " + IllegalArgumentException.class.getName() + " for " + c + ", not " + length);
--- a/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.api.meta.test/src/com/oracle/graal/api/meta/test/TestResolvedJavaType.java	Thu Nov 29 11:27:23 2012 -0800
@@ -123,7 +123,7 @@
     @Test
     public void isInstanceTest() {
         for (Constant c : constants) {
-            if (c.getKind().isObject() && !c.isNull()) {
+            if (c.getKind() == Kind.Object && !c.isNull()) {
                 Object o = c.asObject();
                 Class< ? extends Object> cls = o.getClass();
                 while (cls != null) {
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Constant.java	Thu Nov 29 11:27:23 2012 -0800
@@ -93,7 +93,7 @@
      */
     public Constant(Kind kind, long primitive) {
         super(kind);
-        assert !kind.isObject();
+        assert kind != Kind.Object;
         this.object = null;
         this.primitive = primitive;
     }
@@ -109,7 +109,7 @@
      */
     public Constant(Kind kind, long primitive, Object annotation) {
         super(kind);
-        assert !kind.isObject();
+        assert kind != Kind.Object;
         assert annotation != null;
         this.object = annotation;
         this.primitive = primitive;
@@ -121,7 +121,7 @@
      * @return {@code true} if this constant is a primitive, or an object constant that is not null
      */
     public boolean isNonNull() {
-        return !getKind().isObject() || object != null;
+        return getKind() != Kind.Object || object != null;
     }
 
     /**
@@ -130,7 +130,7 @@
      * @return {@code true} if this constant is the null constant
      */
     public boolean isNull() {
-        return getKind().isObject() && object == null;
+        return getKind() == Kind.Object && object == null;
     }
 
     /**
@@ -145,7 +145,7 @@
     @Override
     public String toString() {
         String annotationSuffix = "";
-        if (!getKind().isObject() && getPrimitiveAnnotation() != null) {
+        if (getKind() != Kind.Object && getPrimitiveAnnotation() != null) {
             annotationSuffix = "{" + getPrimitiveAnnotation() + "}";
         }
         return getKind().getJavaName() + "[" + getKind().format(asBoxedValue()) + (getKind() != Kind.Object ? "|0x" + Long.toHexString(primitive) : "") + "]" + annotationSuffix;
@@ -187,7 +187,7 @@
         if (!ignoreKind && getKind() != other.getKind()) {
             return false;
         }
-        if (getKind().isObject()) {
+        if (getKind() == Kind.Object) {
             return object == other.object;
         }
         return primitive == other.primitive && getPrimitiveAnnotation() == other.getPrimitiveAnnotation();
@@ -199,7 +199,7 @@
      * @return the int value of this constant
      */
     public int asInt() {
-        if (getKind().getStackKind().isStackInt() || getKind().isJsr()) {
+        if (getKind().getStackKind() == Kind.Int || getKind() == Kind.Jsr) {
             return (int) primitive;
         }
         throw new Error("Constant is not int: " + this);
@@ -243,7 +243,7 @@
      * @return the float value of this constant
      */
     public float asFloat() {
-        if (getKind().isFloat()) {
+        if (getKind() == Kind.Float) {
             return Float.intBitsToFloat((int) primitive);
         }
         throw new Error("Constant is not float: " + this);
@@ -255,10 +255,10 @@
      * @return the double value of this constant
      */
     public double asDouble() {
-        if (getKind().isFloat()) {
+        if (getKind() == Kind.Float) {
             return Float.intBitsToFloat((int) primitive);
         }
-        if (getKind().isDouble()) {
+        if (getKind() == Kind.Double) {
             return Double.longBitsToDouble(primitive);
         }
         throw new Error("Constant is not double: " + this);
@@ -270,7 +270,7 @@
      * @return the object which this constant represents
      */
     public Object asObject() {
-        if (getKind().isObject()) {
+        if (getKind() == Kind.Object) {
             return object;
         }
         throw new Error("Constant is not object: " + this);
@@ -282,7 +282,7 @@
      * @return the object which this constant represents
      */
     public int asJsr() {
-        if (getKind().isJsr()) {
+        if (getKind() == Kind.Jsr) {
             return (int) primitive;
         }
         throw new Error("Constant is not jsr: " + this);
@@ -292,7 +292,7 @@
      * Unchecked access to a primitive value.
      */
     public long asPrimitive() {
-        if (getKind().isObject()) {
+        if (getKind() == Kind.Object) {
             throw new Error("Constant is not primitive: " + this);
         }
         return primitive;
@@ -304,7 +304,7 @@
      * @return null if this constant is not primitive or has no annotation
      */
     public Object getPrimitiveAnnotation() {
-        return getKind().isObject() ? null : object;
+        return getKind() == Kind.Object ? null : object;
     }
 
     /**
@@ -314,7 +314,7 @@
      */
     @Override
     public int hashCode() {
-        if (getKind().isObject()) {
+        if (getKind() == Kind.Object) {
             return System.identityHashCode(object);
         }
         return (int) primitive;
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/Kind.java	Thu Nov 29 11:27:23 2012 -0800
@@ -33,51 +33,54 @@
  */
 public enum Kind {
     /** The primitive boolean kind, represented as an int on the stack. */
-    Boolean('z', "boolean", true, true),
+    Boolean('z', "boolean", true, java.lang.Boolean.TYPE, java.lang.Boolean.class),
 
     /** The primitive byte kind, represented as an int on the stack. */
-    Byte('b', "byte", true, true),
+    Byte('b', "byte", true, java.lang.Byte.TYPE, java.lang.Byte.class),
 
     /** The primitive short kind, represented as an int on the stack. */
-    Short('s', "short", true, true),
+    Short('s', "short", true, java.lang.Short.TYPE, java.lang.Short.class),
 
     /** The primitive char kind, represented as an int on the stack. */
-    Char('c', "char", true, true),
+    Char('c', "char", true, java.lang.Character.TYPE, java.lang.Character.class),
 
     /** The primitive int kind, represented as an int on the stack. */
-    Int('i', "int", true, true),
+    Int('i', "int", true, java.lang.Integer.TYPE, java.lang.Integer.class),
 
     /** The primitive float kind. */
-    Float('f', "float", true, false),
+    Float('f', "float", false, java.lang.Float.TYPE, java.lang.Float.class),
 
     /** The primitive long kind. */
-    Long('j', "long", true, false),
+    Long('j', "long", false, java.lang.Long.TYPE, java.lang.Long.class),
 
     /** The primitive double kind. */
-    Double('d', "double", true, false),
+    Double('d', "double", false, java.lang.Double.TYPE, java.lang.Double.class),
 
     /** The Object kind, also used for arrays. */
-    Object('a', "Object", false, false),
+    Object('a', "Object", false, null, null),
 
     /** The void float kind. */
-    Void('v', "void", false, false),
+    Void('v', "void", false, java.lang.Void.TYPE, java.lang.Void.class),
 
     /** Denote a bytecode address in a {@code JSR} bytecode. */
-    Jsr('r', "jsr", false, false),
+    Jsr('r', "jsr", false, null, null),
 
     /** The non-type. */
-    Illegal('-', "illegal", false, false);
+    Illegal('-', "illegal", false, null, null);
 
     private final char typeChar;
     private final String javaName;
     private final boolean isStackInt;
-    private final boolean isPrimitive;
+    private final Class primitiveJavaClass;
+    private final Class boxedJavaClass;
 
-    private Kind(char typeChar, String javaName, boolean isPrimitive, boolean isStackInt) {
+    private Kind(char typeChar, String javaName, boolean isStackInt, Class primitiveJavaClass, Class boxedJavasClass) {
         this.typeChar = typeChar;
         this.javaName = javaName;
-        this.isPrimitive = isPrimitive;
         this.isStackInt = isStackInt;
+        this.primitiveJavaClass = primitiveJavaClass;
+        this.boxedJavaClass = boxedJavasClass;
+        assert primitiveJavaClass == null || javaName.equals(primitiveJavaClass.getName());
     }
 
     /**
@@ -96,22 +99,13 @@
     }
 
     /**
-     * Checks whether this type is valid as an {@code int} on the Java operand stack.
-     *
-     * @return {@code true} if this type is represented by an {@code int} on the operand stack
-     */
-    public boolean isStackInt() {
-        return this.isStackInt;
-    }
-
-    /**
      * Checks whether this type is a Java primitive type.
      *
      * @return {@code true} if this is {@link #Boolean}, {@link #Byte}, {@link #Char}, {@link #Short}, {@link #Int},
-     *         {@link #Long}, {@link #Float} or {@link #Double}.
+     *         {@link #Long}, {@link #Float}, {@link #Double}, or {@link #Void}.
      */
     public boolean isPrimitive() {
-        return this.isPrimitive;
+        return primitiveJavaClass != null;
     }
 
     /**
@@ -120,7 +114,7 @@
      * @return the kind used on the operand stack
      */
     public Kind getStackKind() {
-        if (isStackInt()) {
+        if (isStackInt) {
             return Int;
         }
         return this;
@@ -178,23 +172,23 @@
      * @return the kind
      */
     public static Kind fromJavaClass(Class< ? > klass) {
-        if (klass == java.lang.Boolean.TYPE) {
+        if (klass == Boolean.primitiveJavaClass) {
             return Boolean;
-        } else if (klass == java.lang.Byte.TYPE) {
+        } else if (klass == Byte.primitiveJavaClass) {
             return Byte;
-        } else if (klass == java.lang.Short.TYPE) {
+        } else if (klass == Short.primitiveJavaClass) {
             return Short;
-        } else if (klass == java.lang.Character.TYPE) {
+        } else if (klass == Char.primitiveJavaClass) {
             return Char;
-        } else if (klass == java.lang.Integer.TYPE) {
+        } else if (klass == Int.primitiveJavaClass) {
             return Int;
-        } else if (klass == java.lang.Long.TYPE) {
+        } else if (klass == Long.primitiveJavaClass) {
             return Long;
-        } else if (klass == java.lang.Float.TYPE) {
+        } else if (klass == Float.primitiveJavaClass) {
             return Float;
-        } else if (klass == java.lang.Double.TYPE) {
+        } else if (klass == Double.primitiveJavaClass) {
             return Double;
-        } else if (klass == java.lang.Void.TYPE) {
+        } else if (klass == Void.primitiveJavaClass) {
             return Void;
         } else {
             return Object;
@@ -207,28 +201,7 @@
      * @return the Java class
      */
     public Class< ? > toJavaClass() {
-        switch (this) {
-            case Void:
-                return java.lang.Void.TYPE;
-            case Long:
-                return java.lang.Long.TYPE;
-            case Int:
-                return java.lang.Integer.TYPE;
-            case Byte:
-                return java.lang.Byte.TYPE;
-            case Char:
-                return java.lang.Character.TYPE;
-            case Double:
-                return java.lang.Double.TYPE;
-            case Float:
-                return java.lang.Float.TYPE;
-            case Short:
-                return java.lang.Short.TYPE;
-            case Boolean:
-                return java.lang.Boolean.TYPE;
-            default:
-                return null;
-        }
+        return primitiveJavaClass;
     }
 
     /**
@@ -237,91 +210,7 @@
      * @return the Java class
      */
     public Class< ? > toBoxedJavaClass() {
-        switch (this) {
-            case Void:
-                return java.lang.Void.class;
-            case Long:
-                return java.lang.Long.class;
-            case Int:
-                return java.lang.Integer.class;
-            case Byte:
-                return java.lang.Byte.class;
-            case Char:
-                return java.lang.Character.class;
-            case Double:
-                return java.lang.Double.class;
-            case Float:
-                return java.lang.Float.class;
-            case Short:
-                return java.lang.Short.class;
-            case Boolean:
-                return java.lang.Boolean.class;
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * Checks whether this value type is void.
-     *
-     * @return {@code true} if this type is void
-     */
-    public final boolean isVoid() {
-        return this == Kind.Void;
-    }
-
-    /**
-     * Checks whether this value type is long.
-     *
-     * @return {@code true} if this type is long
-     */
-    public final boolean isLong() {
-        return this == Kind.Long;
-    }
-
-    /**
-     * Checks whether this value type is float.
-     *
-     * @return {@code true} if this type is float
-     */
-    public final boolean isFloat() {
-        return this == Kind.Float;
-    }
-
-    /**
-     * Checks whether this value type is double.
-     *
-     * @return {@code true} if this type is double
-     */
-    public final boolean isDouble() {
-        return this == Kind.Double;
-    }
-
-    /**
-     * Checks whether this value type is float or double.
-     *
-     * @return {@code true} if this type is float or double
-     */
-    public final boolean isFloatOrDouble() {
-        return this == Kind.Double || this == Kind.Float;
-    }
-
-    /**
-     * Checks whether this value type is an object type.
-     *
-     * @return {@code true} if this type is an object
-     */
-    public final boolean isObject() {
-        return this == Kind.Object;
-    }
-
-    /**
-     * Checks whether this value type is an address type.
-     *
-     * @return {@code true} if this type is an address
-     */
-    public boolean isJsr() {
-        return this == Kind.Jsr;
+        return boxedJavaClass;
     }
 
     /**
@@ -346,7 +235,7 @@
      * @return a formatted string for {@code value} based on this kind
      */
     public String format(Object value) {
-        if (isObject()) {
+        if (this == Kind.Object) {
             if (value == null) {
                 return "null";
             } else {
--- a/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.api.meta/src/com/oracle/graal/api/meta/MetaUtil.java	Thu Nov 29 11:27:23 2012 -0800
@@ -162,7 +162,7 @@
      */
     public static String toJavaName(JavaType type, boolean qualified) {
         Kind kind = type.getKind();
-        if (kind.isObject()) {
+        if (kind == Kind.Object) {
             return internalNameToJava(type.getName(), qualified);
         }
         return type.getKind().getJavaName();
--- a/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.compiler.amd64/src/com/oracle/graal/compiler/amd64/AMD64LIRGenerator.java	Thu Nov 29 11:27:23 2012 -0800
@@ -586,7 +586,7 @@
 
     @Override
     public void emitBitScanReverse(Variable result, Value value) {
-        if (value.getKind().isStackInt()) {
+        if (value.getKind().getStackKind() == Kind.Int) {
             append(new AMD64BitScanOp(AMD64BitScanOp.IntrinsicOpcode.IBSR, result, value));
         } else {
             append(new AMD64BitScanOp(AMD64BitScanOp.IntrinsicOpcode.LBSR, result, value));
--- a/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.compiler/src/com/oracle/graal/compiler/gen/LIRGenerator.java	Thu Nov 29 11:27:23 2012 -0800
@@ -507,7 +507,7 @@
     @Override
     public void visitReturn(ReturnNode x) {
         Value operand = Value.ILLEGAL;
-        if (!x.kind().isVoid()) {
+        if (x.kind() != Kind.Void) {
             operand = resultOperandFor(x.kind());
             emitMove(operand(x.result()), operand);
         }
--- a/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot.amd64/src/com/oracle/graal/hotspot/amd64/AMD64HotSpotRegisterConfig.java	Thu Nov 29 11:27:23 2012 -0800
@@ -159,7 +159,7 @@
             }
         }
 
-        Value returnLocation = returnKind.isVoid() ? Value.ILLEGAL : getReturnRegister(returnKind).asValue(returnKind);
+        Value returnLocation = returnKind == Kind.Void ? Value.ILLEGAL : getReturnRegister(returnKind).asValue(returnKind);
         return new CallingConvention(currentStackOffset, returnLocation, locations);
     }
 
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Thu Nov 29 11:27:23 2012 -0800
@@ -76,7 +76,7 @@
      * Reads a word value from a given address.
      */
     public static long unsafeReadWord(long address) {
-        if (wordKind.isLong()) {
+        if (wordKind == Kind.Long) {
             return unsafe.getLong(address);
         }
         return unsafe.getInt(address);
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInstalledCode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotInstalledCode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -75,8 +75,8 @@
         for (int i = 0; i < sig.length; i++) {
             Object arg = args[i];
             if (arg == null) {
-                assert sig[i].isObject() : MetaUtil.format("%H.%n(%p): expected arg ", method) + i + " to be Object, not " + sig[i];
-            } else if (!sig[i].isObject()) {
+                assert sig[i] == Kind.Object : MetaUtil.format("%H.%n(%p): expected arg ", method) + i + " to be Object, not " + sig[i];
+            } else if (sig[i] != Kind.Object) {
                 assert sig[i].toBoxedJavaClass() == arg.getClass() : MetaUtil.format("%H.%n(%p): expected arg ", method) + i + " to be " + sig[i] + ", not " + arg.getClass();
             }
         }
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedObjectType.java	Thu Nov 29 11:27:23 2012 -0800
@@ -83,7 +83,7 @@
      * @return the {@link ResolvedJavaType} corresponding to {@code klassConstant}
      */
     public static ResolvedJavaType fromMetaspaceKlass(Constant metaspaceKlass) {
-        assert metaspaceKlass.getKind().isLong();
+        assert metaspaceKlass.getKind() == Kind.Long;
         return fromMetaspaceKlass(metaspaceKlass.asLong());
     }
 
@@ -297,7 +297,7 @@
 
     @Override
     public boolean isInstance(Constant obj) {
-        if (obj.getKind().isObject() && !obj.isNull()) {
+        if (obj.getKind() == Kind.Object && !obj.isNull()) {
             return javaMirror.isInstance(obj.asObject());
         }
         return false;
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotResolvedPrimitiveType.java	Thu Nov 29 11:27:23 2012 -0800
@@ -42,7 +42,7 @@
         super(String.valueOf(Character.toUpperCase(kind.getTypeChar())));
         this.kind = kind;
         this.javaMirror = kind.toJavaClass();
-        this.javaArrayMirror = kind.isVoid() ? null : Array.newInstance(javaMirror, 0).getClass();
+        this.javaArrayMirror = kind == Kind.Void ? null : Array.newInstance(javaMirror, 0).getClass();
     }
 
     @Override
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/meta/HotSpotRuntime.java	Thu Nov 29 11:27:23 2012 -0800
@@ -82,14 +82,14 @@
     private final Map<Descriptor, RuntimeCall> runtimeCalls = new HashMap<>();
 
     protected Value ret(Kind kind) {
-        if (kind.isVoid()) {
+        if (kind == Kind.Void) {
             return ILLEGAL;
         }
         return globalStubRegConfig.getReturnRegister(kind).asValue(kind);
     }
 
     protected Value arg(int index, Kind kind) {
-        if (kind.isFloat() || kind.isDouble()) {
+        if (kind == Kind.Float || kind == Kind.Double) {
             return globalStubRegConfig.getCallingConventionRegisters(CallingConvention.Type.RuntimeCall, RegisterFlag.FPU)[index].asValue(kind);
         }
         return globalStubRegConfig.getCallingConventionRegisters(CallingConvention.Type.RuntimeCall, RegisterFlag.CPU)[index].asValue(kind);
@@ -330,7 +330,7 @@
 
     @Override
     public ResolvedJavaType lookupJavaType(Constant constant) {
-        if (!constant.getKind().isObject() || constant.isNull()) {
+        if (constant.getKind() != Kind.Object || constant.isNull()) {
             return null;
         }
         Object o = constant.asObject();
@@ -367,7 +367,7 @@
 
     @Override
     public int lookupArrayLength(Constant array) {
-        if (!array.getKind().isObject() || array.isNull() || !array.asObject().getClass().isArray()) {
+        if (array.getKind() != Kind.Object || array.isNull() || !array.asObject().getClass().isArray()) {
             throw new IllegalArgumentException(array + " is not an array");
         }
         return Array.getLength(array.asObject());
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/NewObjectSnippets.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/snippets/NewObjectSnippets.java	Thu Nov 29 11:27:23 2012 -0800
@@ -364,7 +364,7 @@
             ConstantNode hub = ConstantNode.forConstant(type.klass(), runtime, graph);
             Kind elementKind = elementType.getKind();
             final int headerSize = elementKind.getArrayBaseOffset();
-            Key key = new Key(elementKind.isObject() ? initializeObjectArray : initializePrimitiveArray).add("headerSize", headerSize).add("fillContents", initializeNode.fillContents()).add("locked", initializeNode.locked());
+            Key key = new Key(elementKind == Kind.Object ? initializeObjectArray : initializePrimitiveArray).add("headerSize", headerSize).add("fillContents", initializeNode.fillContents()).add("locked", initializeNode.locked());
             ValueNode memory = initializeNode.memory();
             Arguments arguments = arguments("memory", memory).add("hub", hub).add("prototypeMarkWord", type.prototypeMarkWord()).add("size", initializeNode.size()).add("length", initializeNode.length());
             SnippetTemplate template = cache.get(key, assumptions);
--- a/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.java/src/com/oracle/graal/java/GraphBuilderPhase.java	Thu Nov 29 11:27:23 2012 -0800
@@ -536,7 +536,7 @@
         ValueNode b = mirror ? x : y;
 
         CompareNode condition;
-        assert !a.kind().isFloatOrDouble();
+        assert a.kind() != Kind.Double && a.kind() != Kind.Float;
         if (cond == Condition.EQ || cond == Condition.NE) {
             if (a.kind() == Kind.Object) {
                 condition = new ObjectEqualsNode(a, b);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/ConstantNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -224,7 +224,7 @@
     @Override
     public Map<Object, Object> getDebugProperties(Map<Object, Object> map) {
         Map<Object, Object> properties = super.getDebugProperties(map);
-        properties.put("rawvalue", value.getKind().isObject() ? value.getKind().format(value.asBoxedValue()) : value.asBoxedValue());
+        properties.put("rawvalue", value.getKind() == Kind.Object ? value.getKind().format(value.asBoxedValue()) : value.asBoxedValue());
         return properties;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/FrameState.java	Thu Nov 29 11:27:23 2012 -0800
@@ -232,7 +232,7 @@
                 copy.remove(copy.size() - 1);
             }
             ValueNode lastSlot = copy.get(copy.size() - 1);
-            assert lastSlot.kind().getStackKind() == popKind.getStackKind() || (lastSlot instanceof BoxedVirtualObjectNode && popKind.isObject());
+            assert lastSlot.kind().getStackKind() == popKind.getStackKind() || (lastSlot instanceof BoxedVirtualObjectNode && popKind == Kind.Object);
             copy.remove(copy.size() - 1);
         }
         Collections.addAll(copy, pushedValues);
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -141,7 +141,7 @@
 
     @Override
     public void intrinsify(Node node) {
-        assert !(node instanceof ValueNode) || ((ValueNode) node).kind().isVoid() == kind().isVoid();
+        assert !(node instanceof ValueNode) || (((ValueNode) node).kind() == Kind.Void) == (kind() == Kind.Void);
         CallTargetNode call = callTarget;
         FrameState stateAfter = stateAfter();
         if (node instanceof StateSplit) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/InvokeWithExceptionNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -177,7 +177,7 @@
 
     @Override
     public void intrinsify(Node node) {
-        assert !(node instanceof ValueNode) || ((ValueNode) node).kind().isVoid() == kind().isVoid();
+        assert !(node instanceof ValueNode) || (((ValueNode) node).kind() == Kind.Void) == (kind() == Kind.Void);
         CallTargetNode call = callTarget;
         FrameState state = stateAfter();
         killExceptionEdge();
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/CompareNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -131,22 +131,22 @@
     public static CompareNode createCompareNode(Condition condition, ValueNode x, ValueNode y) {
         assert x.kind() == y.kind();
         assert condition.isCanonical() : "condition is not canonical: " + condition;
+        assert x.kind() != Kind.Double && x.kind() != Kind.Float;
 
-        assert !x.kind().isFloatOrDouble();
         CompareNode comparison;
         if (condition == Condition.EQ) {
-            if (x.kind().isObject()) {
+            if (x.kind() == Kind.Object) {
                 comparison = new ObjectEqualsNode(x, y);
             } else {
-                assert x.kind().getStackKind().isStackInt() || x.kind().isLong();
+                assert x.kind().getStackKind() == Kind.Int || x.kind() == Kind.Long;
                 comparison = new IntegerEqualsNode(x, y);
             }
         } else if (condition == Condition.LT) {
-            assert x.kind().getStackKind().isStackInt() || x.kind().isLong();
+            assert x.kind().getStackKind() == Kind.Int || x.kind() == Kind.Long;
             comparison = new IntegerLessThanNode(x, y);
         } else {
             assert condition == Condition.BT;
-            assert x.kind().getStackKind().isStackInt() || x.kind().isLong();
+            assert x.kind().getStackKind() == Kind.Int || x.kind() == Kind.Long;
             comparison = new IntegerBelowThanNode(x, y);
         }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/Condition.java	Thu Nov 29 11:27:23 2012 -0800
@@ -247,7 +247,7 @@
      * {@link Boolean#FALSE} if the comparison is known to be false
      */
     public boolean foldCondition(Constant lt, Constant rt, CodeCacheProvider runtime) {
-        assert !lt.getKind().isFloatOrDouble() && !rt.getKind().isFloatOrDouble();
+        assert lt.getKind() != Kind.Double && lt.getKind() != Kind.Float && rt.getKind() != Kind.Double && rt.getKind() != Kind.Float;
         return foldCondition(lt, rt, runtime, false);
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatEqualsNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.nodes.calc;
 
+import com.oracle.graal.api.meta.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
 
@@ -36,8 +37,8 @@
      */
     public FloatEqualsNode(ValueNode x, ValueNode y) {
         super(x, y);
-        assert x.kind().isFloatOrDouble();
-        assert y.kind().isFloatOrDouble();
+        assert x.kind() == Kind.Double || x.kind() == Kind.Float;
+        assert y.kind() == Kind.Double || y.kind() == Kind.Float;
     }
 
     @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/FloatLessThanNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.nodes.calc;
 
+import com.oracle.graal.api.meta.*;
 import com.oracle.graal.graph.*;
 import com.oracle.graal.nodes.*;
 import com.oracle.graal.nodes.spi.*;
@@ -40,8 +41,8 @@
      */
     public FloatLessThanNode(ValueNode x, ValueNode y, boolean unorderedIsTrue) {
         super(x, y);
-        assert x.kind().isFloatOrDouble();
-        assert y.kind().isFloatOrDouble();
+        assert x.kind() == Kind.Double || x.kind() == Kind.Float;
+        assert y.kind() == Kind.Double || y.kind() == Kind.Float;
         this.unorderedIsTrue = unorderedIsTrue;
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerAddNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerAddNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -79,13 +79,13 @@
 
     public static boolean isIntegerAddition(ValueNode result, ValueNode a, ValueNode b) {
         Kind kind = result.kind();
-        if (kind != a.kind() || kind != b.kind() || !(kind.isStackInt() || kind.isLong())) {
+        if (kind != a.kind() || kind != b.kind() || !(kind.getStackKind() == Kind.Int || kind == Kind.Long)) {
             return false;
         }
         if (result.isConstant() && a.isConstant() && b.isConstant()) {
-            if (kind.isStackInt()) {
+            if (kind.getStackKind() == Kind.Int) {
                 return result.asConstant().asInt() == a.asConstant().asInt() + b.asConstant().asInt();
-            } else if (kind.isLong()) {
+            } else if (kind == Kind.Long) {
                 return result.asConstant().asLong() == a.asConstant().asLong() + b.asConstant().asLong();
             }
         } else if (result instanceof IntegerAddNode) {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowThanNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerBelowThanNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -39,8 +39,8 @@
      */
     public IntegerBelowThanNode(ValueNode x, ValueNode y) {
         super(x, y);
-        assert !x.kind().isFloatOrDouble() && x.kind() != Kind.Object;
-        assert !y.kind().isFloatOrDouble() && y.kind() != Kind.Object;
+        assert x.kind() != Kind.Double && x.kind() != Kind.Float && x.kind() != Kind.Object;
+        assert y.kind() != Kind.Double && y.kind() != Kind.Float && y.kind() != Kind.Object;
     }
 
     @Override
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerDivNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -70,10 +70,10 @@
                 // no rounding if dividend is positive or if its low bits are always 0
                 if (stampX.canBeNegative() || (stampX.mask() & (abs - 1)) != 0) {
                     int bits;
-                    if (kind().isStackInt()) {
+                    if (kind().getStackKind() == Kind.Int) {
                         bits = 32;
                     } else {
-                        assert kind().isLong();
+                        assert kind() == Kind.Long;
                         bits = 64;
                     }
                     RightShiftNode sign = graph().unique(new RightShiftNode(kind(), x(), ConstantNode.forInt(bits - 1, graph())));
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerEqualsNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -38,8 +38,8 @@
      */
     public IntegerEqualsNode(ValueNode x, ValueNode y) {
         super(x, y);
-        assert !x.kind().isFloatOrDouble() && x.kind() != Kind.Object;
-        assert !y.kind().isFloatOrDouble() && y.kind() != Kind.Object;
+        assert x.kind() != Kind.Double && x.kind() != Kind.Float && x.kind() != Kind.Object;
+        assert y.kind() != Kind.Double && y.kind() != Kind.Float && y.kind() != Kind.Object;
     }
 
     @Override
@@ -58,7 +58,7 @@
             ValueNode a = mirrored ? normalizeNode.y() : normalizeNode.x();
             ValueNode b = mirrored ? normalizeNode.x() : normalizeNode.y();
 
-            if (normalizeNode.x().kind().isFloatOrDouble()) {
+            if (normalizeNode.x().kind() == Kind.Double || normalizeNode.x().kind() == Kind.Float) {
                 return graph().unique(new FloatEqualsNode(a, b));
             } else {
                 return graph().unique(new IntegerEqualsNode(a, b));
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IntegerLessThanNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -39,8 +39,8 @@
      */
     public IntegerLessThanNode(ValueNode x, ValueNode y) {
         super(x, y);
-        assert !x.kind().isFloatOrDouble() && x.kind() != Kind.Object;
-        assert !y.kind().isFloatOrDouble() && y.kind() != Kind.Object;
+        assert x.kind() != Kind.Double && x.kind() != Kind.Float && x.kind() != Kind.Object;
+        assert y.kind() != Kind.Double && y.kind() != Kind.Float && y.kind() != Kind.Object;
     }
 
     @Override
@@ -60,7 +60,7 @@
             ValueNode a = mirrored ? normalizeNode.y() : normalizeNode.x();
             ValueNode b = mirrored ? normalizeNode.x() : normalizeNode.y();
 
-            if (normalizeNode.x().kind().isFloatOrDouble()) {
+            if (normalizeNode.x().kind() == Kind.Double || normalizeNode.x().kind() == Kind.Float) {
                 return graph().unique(new FloatLessThanNode(a, b, mirrored ^ normalizeNode.isUnorderedLess));
             } else {
                 return graph().unique(new IntegerLessThanNode(a, b));
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/IsNullNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -57,7 +57,7 @@
     @Override
     public boolean verify() {
         assertTrue(object() != null, "is null input must not be null");
-        assertTrue(object().kind().isObject(), "is null input must be an object");
+        assertTrue(object().kind() == Kind.Object, "is null input must be an object");
         return super.verify();
     }
 
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/calc/NormalizeCompareNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -50,7 +50,7 @@
 
         BooleanNode equalComp;
         BooleanNode lessComp;
-        if (x().kind().isFloatOrDouble()) {
+        if (x().kind() == Kind.Double || x().kind() == Kind.Float) {
             equalComp = graph.unique(new FloatEqualsNode(x(), y()));
             lessComp = graph.unique(new FloatLessThanNode(x(), y(), isUnorderedLess));
         } else {
--- a/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.nodes/src/com/oracle/graal/nodes/extended/UnsafeCastNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -46,7 +46,7 @@
     }
 
     public UnsafeCastNode(ValueNode object, ResolvedJavaType toType, boolean exactType, boolean nonNull) {
-        this(object, toType.getKind().isObject() ? StampFactory.object(toType, exactType, nonNull || object.stamp().nonNull()) : StampFactory.forKind(toType.getKind()));
+        this(object, toType.getKind() == Kind.Object ? StampFactory.object(toType, exactType, nonNull || object.stamp().nonNull()) : StampFactory.forKind(toType.getKind()));
     }
 
     @Override
--- a/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.phases.common/src/com/oracle/graal/phases/common/InliningUtil.java	Thu Nov 29 11:27:23 2012 -0800
@@ -560,7 +560,7 @@
             result.setProbability(probability);
 
             Kind kind = invoke.node().kind();
-            if (!kind.isVoid()) {
+            if (kind != Kind.Void) {
                 FrameState stateAfter = invoke.stateAfter();
                 stateAfter = stateAfter.duplicate(stateAfter.bci);
                 stateAfter.replaceFirstInput(invoke.node(), result.node());
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetIntrinsificationPhase.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetIntrinsificationPhase.java	Thu Nov 29 11:27:23 2012 -0800
@@ -319,7 +319,7 @@
         try {
             ValueNode intrinsicNode = (ValueNode) constructor.newInstance(arguments);
             if (setStampFromReturnType) {
-                if (returnType.getKind().isObject()) {
+                if (returnType.getKind() == Kind.Object) {
                     intrinsicNode.setStamp(StampFactory.declared(returnType));
                 } else {
                     intrinsicNode.setStamp(StampFactory.forKind(returnType.getKind()));
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetTemplate.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/SnippetTemplate.java	Thu Nov 29 11:27:23 2012 -0800
@@ -390,7 +390,7 @@
     }
 
     private static boolean checkConstantArgument(final ResolvedJavaMethod method, Signature signature, int i, String name, Object arg, Kind kind) {
-        if (kind.isObject()) {
+        if (kind == Kind.Object) {
             ResolvedJavaType type = signature.getParameterType(i, method.getDeclaringClass()).resolve(method.getDeclaringClass());
             assert arg == null || type.isInstance(Constant.forObject(arg)) :
                 method + ": wrong value type for " + name + ": expected " + type.getName() + ", got " + arg.getClass().getName();
@@ -458,7 +458,7 @@
                     replacements.put((LocalNode) parameter, (ValueNode) argument);
                 } else {
                     Kind kind = ((LocalNode) parameter).kind();
-                    assert argument != null || kind.isObject() : this + " cannot accept null for non-object parameter named " + name;
+                    assert argument != null || kind == Kind.Object : this + " cannot accept null for non-object parameter named " + name;
                     Constant constant = Constant.forBoxed(kind, argument);
                     replacements.put((LocalNode) parameter, ConstantNode.forConstant(constant, runtime, replaceeGraph));
                 }
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/WordTypeRewriterPhase.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/WordTypeRewriterPhase.java	Thu Nov 29 11:27:23 2012 -0800
@@ -99,7 +99,7 @@
                 switch (opcode) {
                     case ZERO: {
                         assert arguments.size() == 0;
-                        replace(invoke, wordKind.isLong() ? ConstantNode.forLong(0L, graph) : ConstantNode.forInt(0, graph));
+                        replace(invoke, wordKind == Kind.Long ? ConstantNode.forLong(0L, graph) : ConstantNode.forInt(0, graph));
                         break;
                     }
 
@@ -261,12 +261,12 @@
     private ValueNode asWordKind(StructuredGraph graph, ValueNode value) {
         if (value.kind() != wordKind) {
             Op op;
-            if (wordKind.isLong()) {
-                assert value.kind().isStackInt();
+            if (wordKind == Kind.Long) {
+                assert value.kind().getStackKind() == Kind.Int;
                 op = Op.I2L;
             } else {
-                assert wordKind.isStackInt();
-                assert value.kind().isLong();
+                assert wordKind.getStackKind() == Kind.Int;
+                assert value.kind() == Kind.Long;
                 op = Op.L2I;
             }
             return graph.unique(new ConvertNode(op, value));
@@ -278,10 +278,10 @@
         Kind from = value.kind();
         if (from != to) {
             Op op;
-            if (from.isLong()) {
+            if (from == Kind.Long) {
                 op = Op.L2I;
             } else {
-                assert from.isStackInt();
+                assert from.getStackKind() == Kind.Int;
                 op = Op.I2L;
             }
             return graph.unique(new ConvertNode(op, value));
@@ -296,7 +296,7 @@
         if (node instanceof LoadIndexedNode) {
             return isWord(((LoadIndexedNode) node).array().objectStamp().type().getComponentType());
         }
-        if (node.kind().isObject()) {
+        if (node.kind() == Kind.Object) {
             return isWord(node.objectStamp().type());
         }
         return false;
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/BitScanForwardNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/BitScanForwardNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -44,9 +44,9 @@
     public ValueNode canonical(CanonicalizerTool tool) {
         if (value.isConstant()) {
             long v = value.asConstant().asLong();
-            if (value.kind().isStackInt()) {
+            if (value.kind().getStackKind() == Kind.Int) {
                 return ConstantNode.forInt(Integer.numberOfTrailingZeros((int) v), graph());
-            } else if (value.kind().isLong()) {
+            } else if (value.kind() == Kind.Long) {
                 return ConstantNode.forInt(Long.numberOfTrailingZeros(v), graph());
             }
         }
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/BitScanReverseNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/BitScanReverseNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -44,9 +44,9 @@
     public ValueNode canonical(CanonicalizerTool tool) {
         if (value.isConstant()) {
             long v = value.asConstant().asLong();
-            if (value.kind().isStackInt()) {
+            if (value.kind().getStackKind() == Kind.Int) {
                 return ConstantNode.forInt(31 - Integer.numberOfLeadingZeros((int) v), graph());
-            } else if (value.kind().isLong()) {
+            } else if (value.kind() == Kind.Long) {
                 return ConstantNode.forInt(63 - Long.numberOfLeadingZeros(v), graph());
             }
         }
--- a/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/ReverseBytesNode.java	Thu Nov 29 10:10:03 2012 -0800
+++ b/graal/com.oracle.graal.snippets/src/com/oracle/graal/snippets/nodes/ReverseBytesNode.java	Thu Nov 29 11:27:23 2012 -0800
@@ -22,6 +22,7 @@
  */
 package com.oracle.graal.snippets.nodes;
 
+import com.oracle.graal.api.meta.*;
 import com.oracle.graal.compiler.gen.*;
 import com.oracle.graal.compiler.target.*;
 import com.oracle.graal.lir.*;
@@ -36,7 +37,7 @@
 
     public ReverseBytesNode(ValueNode value) {
         super(StampFactory.forKind(value.kind()));
-        assert kind().isStackInt() || kind().isLong();
+        assert kind().getStackKind() == Kind.Int || kind() == Kind.Long;
         this.value = value;
     }
 
@@ -44,9 +45,9 @@
     public ValueNode canonical(CanonicalizerTool tool) {
         if (value.isConstant()) {
             long v = value.asConstant().asLong();
-            if (kind().isStackInt()) {
+            if (kind().getStackKind() == Kind.Int) {
                 return ConstantNode.forInt(Integer.reverseBytes((int) v), graph());
-            } else if (kind().isLong()) {
+            } else if (kind() == Kind.Long) {
                 return ConstantNode.forLong(Long.reverseBytes(v), graph());
             }
         }