| Index: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart | 
| =================================================================== | 
| --- sdk/lib/_internal/compiler/implementation/ssa/nodes.dart	(revision 30666) | 
| +++ sdk/lib/_internal/compiler/implementation/ssa/nodes.dart	(working copy) | 
| @@ -162,30 +162,10 @@ | 
| return result; | 
| } | 
|  | 
| -  static TypeMask mapConstantTypeToSsaType(Constant constant, | 
| -                                           Compiler compiler) { | 
| -    JavaScriptBackend backend = compiler.backend; | 
| -    if (constant.isNull()) return backend.nullType; | 
| -    if (constant.isBool()) return backend.boolType; | 
| -    if (constant.isInt()) return backend.intType; | 
| -    if (constant.isDouble()) return backend.doubleType; | 
| -    if (constant.isString()) return backend.stringType; | 
| -    if (constant.isList()) return backend.readableArrayType; | 
| -    if (constant.isFunction()) return backend.nonNullType; | 
| -    if (constant.isSentinel()) return backend.nonNullType; | 
| -    // TODO(sra): What is the type of the prototype of an interceptor? | 
| -    if (constant.isInterceptor()) return backend.nonNullType; | 
| -    ObjectConstant objectConstant = constant; | 
| -    if (backend.isInterceptorClass(objectConstant.type.element)) { | 
| -      return backend.nonNullType; | 
| -    } | 
| -    return new TypeMask.nonNullExact(objectConstant.type.element); | 
| -  } | 
| - | 
| HConstant addConstant(Constant constant, Compiler compiler) { | 
| HConstant result = constants[constant]; | 
| if (result == null) { | 
| -      TypeMask type = mapConstantTypeToSsaType(constant, compiler); | 
| +      TypeMask type = constant.computeMask(compiler); | 
| result = new HConstant.internal(constant, type); | 
| entry.addAtExit(result); | 
| constants[constant] = result; | 
| @@ -921,6 +901,18 @@ | 
| && !instructionType.isNullable; | 
| } | 
|  | 
| +  bool isUInt32(Compiler compiler) { | 
| +    JavaScriptBackend backend = compiler.backend; | 
| +    return !instructionType.isNullable | 
| +        && instructionType.satisfies(backend.jsUInt32Class, compiler); | 
| +  } | 
| + | 
| +  bool isUInt31(Compiler compiler) { | 
| +    JavaScriptBackend backend = compiler.backend; | 
| +    return !instructionType.isNullable | 
| +        && instructionType.satisfies(backend.jsUInt31Class, compiler); | 
| +  } | 
| + | 
| bool isIntegerOrNull(Compiler compiler) { | 
| return instructionType.containsOnlyInt(compiler); | 
| } | 
|  |