Index: pkg/compiler/lib/src/types/masks.dart |
diff --git a/pkg/compiler/lib/src/types/masks.dart b/pkg/compiler/lib/src/types/masks.dart |
index 0f8fc76afa63bcae6e46d4409dccb41d51783ef7..15d17c8b6e5664fd37614aad54de7fb85a417086 100644 |
--- a/pkg/compiler/lib/src/types/masks.dart |
+++ b/pkg/compiler/lib/src/types/masks.dart |
@@ -5,7 +5,7 @@ |
library masks; |
import '../common.dart'; |
-import '../common/backend_api.dart' show BackendClasses; |
+import '../common_elements.dart' show CommonElements; |
import '../constants/values.dart' show PrimitiveConstantValue; |
import '../elements/entities.dart'; |
import '../inferrer/type_graph_inferrer.dart' show TypeGraphInferrer; |
@@ -36,7 +36,7 @@ class CommonMasks { |
CommonMasks(this.closedWorld); |
- BackendClasses get backendClasses => closedWorld.backendClasses; |
+ CommonElements get commonElements => closedWorld.commonElements; |
TypeMask _dynamicType; |
TypeMask _nonNullType; |
@@ -75,64 +75,64 @@ class CommonMasks { |
closedWorld.commonElements.objectClass, closedWorld); |
TypeMask get intType => _intType ??= |
- new TypeMask.nonNullSubclass(backendClasses.intClass, closedWorld); |
+ new TypeMask.nonNullSubclass(commonElements.jsIntClass, closedWorld); |
TypeMask get uint32Type => _uint32Type ??= |
- new TypeMask.nonNullSubclass(backendClasses.uint32Class, closedWorld); |
+ new TypeMask.nonNullSubclass(commonElements.jsUInt32Class, closedWorld); |
TypeMask get uint31Type => _uint31Type ??= |
- new TypeMask.nonNullExact(backendClasses.uint31Class, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsUInt31Class, closedWorld); |
TypeMask get positiveIntType => |
_positiveIntType ??= new TypeMask.nonNullSubclass( |
- backendClasses.positiveIntClass, closedWorld); |
+ commonElements.jsPositiveIntClass, closedWorld); |
TypeMask get doubleType => _doubleType ??= |
- new TypeMask.nonNullExact(backendClasses.doubleClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsDoubleClass, closedWorld); |
TypeMask get numType => _numType ??= |
- new TypeMask.nonNullSubclass(backendClasses.numClass, closedWorld); |
+ new TypeMask.nonNullSubclass(commonElements.jsNumberClass, closedWorld); |
TypeMask get boolType => _boolType ??= |
- new TypeMask.nonNullExact(backendClasses.boolClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsBoolClass, closedWorld); |
TypeMask get functionType => _functionType ??= |
- new TypeMask.nonNullSubtype(backendClasses.functionClass, closedWorld); |
+ new TypeMask.nonNullSubtype(commonElements.functionClass, closedWorld); |
TypeMask get listType => _listType ??= |
- new TypeMask.nonNullExact(backendClasses.listClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsArrayClass, closedWorld); |
- TypeMask get constListType => _constListType ??= |
- new TypeMask.nonNullExact(backendClasses.constListClass, closedWorld); |
+ TypeMask get constListType => _constListType ??= new TypeMask.nonNullExact( |
+ commonElements.jsUnmodifiableArrayClass, closedWorld); |
TypeMask get fixedListType => _fixedListType ??= |
- new TypeMask.nonNullExact(backendClasses.fixedListClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsFixedArrayClass, closedWorld); |
- TypeMask get growableListType => _growableListType ??= |
- new TypeMask.nonNullExact(backendClasses.growableListClass, closedWorld); |
+ TypeMask get growableListType => |
+ _growableListType ??= new TypeMask.nonNullExact( |
+ commonElements.jsExtendableArrayClass, closedWorld); |
TypeMask get mapType => _mapType ??= |
- new TypeMask.nonNullSubtype(backendClasses.mapClass, closedWorld); |
+ new TypeMask.nonNullSubtype(commonElements.mapLiteralClass, closedWorld); |
- TypeMask get constMapType => _constMapType ??= |
- new TypeMask.nonNullSubtype(backendClasses.constMapClass, closedWorld); |
+ TypeMask get constMapType => _constMapType ??= new TypeMask.nonNullSubtype( |
+ commonElements.constMapLiteralClass, closedWorld); |
TypeMask get stringType => _stringType ??= |
- new TypeMask.nonNullExact(backendClasses.stringClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsStringClass, closedWorld); |
TypeMask get typeType => _typeType ??= |
- new TypeMask.nonNullExact(backendClasses.typeClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.typeLiteralClass, closedWorld); |
- TypeMask get syncStarIterableType => |
- _syncStarIterableType ??= new TypeMask.nonNullExact( |
- backendClasses.syncStarIterableClass, closedWorld); |
+ TypeMask get syncStarIterableType => _syncStarIterableType ??= |
+ new TypeMask.nonNullExact(commonElements.syncStarIterable, closedWorld); |
- TypeMask get asyncFutureType => _asyncFutureType ??= |
- new TypeMask.nonNullExact(backendClasses.asyncFutureClass, closedWorld); |
+ TypeMask get asyncFutureType => |
+ _asyncFutureType ??= new TypeMask.nonNullExact( |
+ commonElements.futureImplementation, closedWorld); |
- TypeMask get asyncStarStreamType => |
- _asyncStarStreamType ??= new TypeMask.nonNullExact( |
- backendClasses.asyncStarStreamClass, closedWorld); |
+ TypeMask get asyncStarStreamType => _asyncStarStreamType ??= |
+ new TypeMask.nonNullExact(commonElements.controllerStream, closedWorld); |
// TODO(johnniwinther): Assert that the null type has been resolved. |
TypeMask get nullType => _nullType ??= const TypeMask.empty(); |
@@ -140,27 +140,29 @@ class CommonMasks { |
TypeMask get emptyType => const TypeMask.nonNullEmpty(); |
TypeMask get indexablePrimitiveType => _indexablePrimitiveType ??= |
- new TypeMask.nonNullSubtype(backendClasses.indexableClass, closedWorld); |
+ new TypeMask.nonNullSubtype(commonElements.jsIndexableClass, closedWorld); |
TypeMask get readableArrayType => _readableArrayType ??= |
- new TypeMask.nonNullSubclass(backendClasses.listClass, closedWorld); |
+ new TypeMask.nonNullSubclass(commonElements.jsArrayClass, closedWorld); |
TypeMask get mutableArrayType => |
_mutableArrayType ??= new TypeMask.nonNullSubclass( |
- backendClasses.mutableListClass, closedWorld); |
+ commonElements.jsMutableArrayClass, closedWorld); |
TypeMask get fixedArrayType => _fixedArrayType ??= |
- new TypeMask.nonNullExact(backendClasses.fixedListClass, closedWorld); |
+ new TypeMask.nonNullExact(commonElements.jsFixedArrayClass, closedWorld); |
- TypeMask get extendableArrayType => _extendableArrayType ??= |
- new TypeMask.nonNullExact(backendClasses.growableListClass, closedWorld); |
+ TypeMask get extendableArrayType => |
+ _extendableArrayType ??= new TypeMask.nonNullExact( |
+ commonElements.jsExtendableArrayClass, closedWorld); |
- TypeMask get unmodifiableArrayType => _unmodifiableArrayType ??= |
- new TypeMask.nonNullExact(backendClasses.constListClass, closedWorld); |
+ TypeMask get unmodifiableArrayType => |
+ _unmodifiableArrayType ??= new TypeMask.nonNullExact( |
+ commonElements.jsUnmodifiableArrayClass, closedWorld); |
TypeMask get interceptorType => |
_interceptorType ??= new TypeMask.nonNullSubclass( |
- backendClasses.interceptorClass, closedWorld); |
+ commonElements.jsInterceptorClass, closedWorld); |
bool isTypedArray(TypeMask mask) { |
// Just checking for [:TypedData:] is not sufficient, as it is an |
@@ -170,8 +172,8 @@ class CommonMasks { |
return typedDataClass != null && |
closedWorld.isInstantiated(typedDataClass) && |
mask.satisfies(typedDataClass, closedWorld) && |
- mask.satisfies( |
- closedWorld.backendClasses.indexingBehaviorClass, closedWorld); |
+ mask.satisfies(closedWorld.commonElements.jsIndexingBehaviorInterface, |
+ closedWorld); |
} |
bool couldBeTypedArray(TypeMask mask) { |
@@ -186,7 +188,8 @@ class CommonMasks { |
intersects( |
mask, |
new TypeMask.subtype( |
- closedWorld.backendClasses.indexingBehaviorClass, closedWorld)); |
+ closedWorld.commonElements.jsIndexingBehaviorInterface, |
+ closedWorld)); |
} |
TypeMask createNonNullExact(ClassEntity cls) { |