Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(474)

Unified Diff: sdk/lib/_internal/compiler/implementation/ssa/types.dart

Issue 24952003: Change TypeMask.base to be a ClassElement. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Moar declaration. Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/ssa/types.dart
diff --git a/sdk/lib/_internal/compiler/implementation/ssa/types.dart b/sdk/lib/_internal/compiler/implementation/ssa/types.dart
index 659737c1f437324df21333fd9b0a2d7fb65bd31c..bfdb564ca4c76e79e547ee64b7ed63289e38e93d 100644
--- a/sdk/lib/_internal/compiler/implementation/ssa/types.dart
+++ b/sdk/lib/_internal/compiler/implementation/ssa/types.dart
@@ -30,8 +30,7 @@ abstract class HType {
// TODO(ngeoffray): Avoid creating [TypeMask]s with the string
// class as base.
return isNullable
- ? new HBoundedType(
- new TypeMask.exact(backend.jsStringClass.rawType))
+ ? new HBoundedType(new TypeMask.exact(backend.jsStringClass))
: backend.stringType;
} else if (mask.containsOnlyBool(compiler)) {
return isNullable ? HType.BOOLEAN_OR_NULL : HType.BOOLEAN;
@@ -48,33 +47,33 @@ abstract class HType {
return new HBoundedType(mask);
}
- factory HType.exact(DartType type, Compiler compiler) {
- TypeMask mask = new TypeMask.exact(type);
+ factory HType.exact(ClassElement type, Compiler compiler) {
+ TypeMask mask = new TypeMask.exact(type.declaration);
return new HType.fromMask(mask, compiler);
}
- factory HType.subclass(DartType type, Compiler compiler) {
- TypeMask mask = new TypeMask.subclass(type);
+ factory HType.subclass(ClassElement type, Compiler compiler) {
+ TypeMask mask = new TypeMask.subclass(type.declaration);
return new HType.fromMask(mask, compiler);
}
- factory HType.subtype(DartType type, Compiler compiler) {
- TypeMask mask = new TypeMask.subtype(type);
+ factory HType.subtype(ClassElement type, Compiler compiler) {
+ TypeMask mask = new TypeMask.subtype(type.declaration);
return new HType.fromMask(mask, compiler);
}
- factory HType.nonNullExact(DartType type, Compiler compiler) {
- TypeMask mask = new TypeMask.nonNullExact(type);
+ factory HType.nonNullExact(ClassElement type, Compiler compiler) {
+ TypeMask mask = new TypeMask.nonNullExact(type.declaration);
return new HType.fromMask(mask, compiler);
}
- factory HType.nonNullSubclass(DartType type, Compiler compiler) {
- TypeMask mask = new TypeMask.nonNullSubclass(type);
+ factory HType.nonNullSubclass(ClassElement type, Compiler compiler) {
+ TypeMask mask = new TypeMask.nonNullSubclass(type.declaration);
return new HType.fromMask(mask, compiler);
}
- factory HType.nonNullSubtype(DartType type, Compiler compiler) {
- TypeMask mask = new TypeMask.nonNullSubtype(type);
+ factory HType.nonNullSubtype(ClassElement type, Compiler compiler) {
+ TypeMask mask = new TypeMask.nonNullSubtype(type.declaration);
return new HType.fromMask(mask, compiler);
}
@@ -123,8 +122,7 @@ abstract class HType {
// like [native.SpecialType.JsObject].
static HType fromNativeType(type, Compiler compiler) {
if (type == native.SpecialType.JsObject) {
- return new HType.nonNullExact(
- compiler.objectClass.computeType(compiler), compiler);
+ return new HType.nonNullExact(compiler.objectClass, compiler);
} else if (type.isVoid) {
return HType.NULL;
} else if (type.element == compiler.nullClass) {
@@ -132,11 +130,11 @@ abstract class HType {
} else if (type.treatAsDynamic) {
return HType.UNKNOWN;
} else if (compiler.world.hasAnySubtype(type.element)) {
- return new HType.nonNullSubtype(type, compiler);
+ return new HType.nonNullSubtype(type.element, compiler);
} else if (compiler.world.hasAnySubclass(type.element)) {
- return new HType.nonNullSubclass(type, compiler);
+ return new HType.nonNullSubclass(type.element, compiler);
} else {
- return new HType.nonNullExact(type, compiler);
+ return new HType.nonNullExact(type.element, compiler);
}
}
@@ -190,8 +188,7 @@ abstract class HType {
}
bool implementsInterface(ClassElement interfaceElement, Compiler compiler) {
- DartType interfaceType = interfaceElement.computeType(compiler);
- TypeMask mask = new TypeMask.subtype(interfaceType);
+ TypeMask mask = new TypeMask.subtype(interfaceElement);
return mask == mask.union(computeMask(compiler), compiler);
}
@@ -280,8 +277,7 @@ class HUnknownType extends HAnalysisType {
bool canBePrimitiveBoolean(Compiler compiler) => true;
TypeMask computeMask(Compiler compiler) {
- DartType base = compiler.objectClass.computeType(compiler);
- return new TypeMask.subclass(base);
+ return new TypeMask.subclass(compiler.objectClass);
}
}
@@ -295,8 +291,7 @@ class HNonNullType extends HAnalysisType {
bool canBePrimitiveBoolean(Compiler compiler) => true;
TypeMask computeMask(Compiler compiler) {
- DartType base = compiler.objectClass.computeType(compiler);
- return new TypeMask.nonNullSubclass(base);
+ return new TypeMask.nonNullSubclass(compiler.objectClass);
}
}
@@ -344,8 +339,7 @@ class HBooleanOrNullType extends HPrimitiveOrNullType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsBoolClass.computeType(compiler);
- return new TypeMask.exact(base);
+ return new TypeMask.exact(backend.jsBoolClass);
}
}
@@ -359,8 +353,7 @@ class HBooleanType extends HPrimitiveType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsBoolClass.computeType(compiler);
- return new TypeMask.nonNullExact(base);
+ return new TypeMask.nonNullExact(backend.jsBoolClass);
}
}
@@ -372,8 +365,7 @@ class HNumberOrNullType extends HPrimitiveOrNullType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsNumberClass.computeType(compiler);
- return new TypeMask.subclass(base);
+ return new TypeMask.subclass(backend.jsNumberClass);
}
}
@@ -386,8 +378,7 @@ class HNumberType extends HPrimitiveType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsNumberClass.computeType(compiler);
- return new TypeMask.nonNullSubclass(base);
+ return new TypeMask.nonNullSubclass(backend.jsNumberClass);
}
}
@@ -398,8 +389,7 @@ class HIntegerOrNullType extends HNumberOrNullType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsIntClass.computeType(compiler);
- return new TypeMask.exact(base);
+ return new TypeMask.exact(backend.jsIntClass);
}
}
@@ -412,8 +402,7 @@ class HIntegerType extends HNumberType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsIntClass.computeType(compiler);
- return new TypeMask.nonNullExact(base);
+ return new TypeMask.nonNullExact(backend.jsIntClass);
}
}
@@ -424,8 +413,7 @@ class HDoubleOrNullType extends HNumberOrNullType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsDoubleClass.computeType(compiler);
- return new TypeMask.exact(base);
+ return new TypeMask.exact(backend.jsDoubleClass);
}
}
@@ -438,8 +426,7 @@ class HDoubleType extends HNumberType {
TypeMask computeMask(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType base = backend.jsDoubleClass.computeType(compiler);
- return new TypeMask.nonNullExact(base);
+ return new TypeMask.nonNullExact(backend.jsDoubleClass);
}
}
@@ -460,28 +447,21 @@ class HBoundedType extends HType {
bool canBePrimitiveNumber(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType jsNumberType = backend.jsNumberClass.computeType(compiler);
- DartType jsIntType = backend.jsIntClass.computeType(compiler);
- DartType jsDoubleType = backend.jsDoubleClass.computeType(compiler);
- return mask.contains(jsNumberType, compiler)
- || mask.contains(jsIntType, compiler)
- || mask.contains(jsDoubleType, compiler);
+ return mask.contains(backend.jsNumberClass, compiler)
+ || mask.contains(backend.jsIntClass, compiler)
+ || mask.contains(backend.jsDoubleClass, compiler);
}
bool canBePrimitiveBoolean(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType jsBoolType = backend.jsBoolClass.computeType(compiler);
- return mask.contains(jsBoolType, compiler);
+ return mask.contains(backend.jsBoolClass, compiler);
}
bool canBePrimitiveArray(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType jsArrayType = backend.jsArrayClass.rawType;
- DartType jsFixedArrayType = backend.jsFixedArrayClass.rawType;
- DartType jsExtendableArrayType = backend.jsExtendableArrayClass.rawType;
- return mask.contains(jsArrayType, compiler)
- || mask.contains(jsFixedArrayType, compiler)
- || mask.contains(jsExtendableArrayType, compiler);
+ return mask.contains(backend.jsArrayClass, compiler)
+ || mask.contains(backend.jsFixedArrayClass, compiler)
+ || mask.contains(backend.jsExtendableArrayClass, compiler);
}
bool isIndexablePrimitive(Compiler compiler) {
@@ -511,8 +491,7 @@ class HBoundedType extends HType {
bool canBePrimitiveString(Compiler compiler) {
JavaScriptBackend backend = compiler.backend;
- DartType jsStringType = backend.jsStringClass.computeType(compiler);
- return mask.contains(jsStringType, compiler);
+ return mask.contains(backend.jsStringClass, compiler);
}
TypeMask computeMask(Compiler compiler) => mask;

Powered by Google App Engine
This is Rietveld 408576698