Chromium Code Reviews| 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.satisfies(backend.jsUInt32Class, compiler) |
|
kasperl
2013/11/26 14:58:40
Maybe do !isNullable first -- that's probably a li
ngeoffray
2013/11/26 15:19:12
Done.
|
| + && !instructionType.isNullable; |
| + } |
| + |
| + bool isUInt31(Compiler compiler) { |
| + JavaScriptBackend backend = compiler.backend; |
| + return instructionType.satisfies(backend.jsUInt31Class, compiler) |
| + && !instructionType.isNullable; |
| + } |
| + |
| bool isIntegerOrNull(Compiler compiler) { |
| return instructionType.containsOnlyInt(compiler); |
| } |