Index: pkg/compiler/lib/src/js_backend/backend.dart |
diff --git a/pkg/compiler/lib/src/js_backend/backend.dart b/pkg/compiler/lib/src/js_backend/backend.dart |
index 2fa04484c947dbe735145801b24a6ab36209e48b..56e8e89180a74eefc363f6a85d257a814843aa66 100644 |
--- a/pkg/compiler/lib/src/js_backend/backend.dart |
+++ b/pkg/compiler/lib/src/js_backend/backend.dart |
@@ -337,18 +337,19 @@ class JavaScriptBackend extends Backend { |
TRACE_METHOD == 'post' || TRACE_METHOD == 'console'; |
MethodElement traceHelper; |
- TypeMask get stringType => compiler.commonMasks.stringType; |
- TypeMask get doubleType => compiler.commonMasks.doubleType; |
- TypeMask get intType => compiler.commonMasks.intType; |
- TypeMask get uint32Type => compiler.commonMasks.uint32Type; |
- TypeMask get uint31Type => compiler.commonMasks.uint31Type; |
- TypeMask get positiveIntType => compiler.commonMasks.positiveIntType; |
- TypeMask get numType => compiler.commonMasks.numType; |
- TypeMask get boolType => compiler.commonMasks.boolType; |
- TypeMask get dynamicType => compiler.commonMasks.dynamicType; |
- TypeMask get nullType => compiler.commonMasks.nullType; |
+ TypeMask get stringType => compiler.closedWorld.commonMasks.stringType; |
+ TypeMask get doubleType => compiler.closedWorld.commonMasks.doubleType; |
+ TypeMask get intType => compiler.closedWorld.commonMasks.intType; |
+ TypeMask get uint32Type => compiler.closedWorld.commonMasks.uint32Type; |
+ TypeMask get uint31Type => compiler.closedWorld.commonMasks.uint31Type; |
+ TypeMask get positiveIntType => |
+ compiler.closedWorld.commonMasks.positiveIntType; |
+ TypeMask get numType => compiler.closedWorld.commonMasks.numType; |
+ TypeMask get boolType => compiler.closedWorld.commonMasks.boolType; |
+ TypeMask get dynamicType => compiler.closedWorld.commonMasks.dynamicType; |
+ TypeMask get nullType => compiler.closedWorld.commonMasks.nullType; |
TypeMask get emptyType => const TypeMask.nonNullEmpty(); |
- TypeMask get nonNullType => compiler.commonMasks.nonNullType; |
+ TypeMask get nonNullType => compiler.closedWorld.commonMasks.nonNullType; |
TypeMask _indexablePrimitiveTypeCache; |
TypeMask get indexablePrimitiveType { |
@@ -519,6 +520,9 @@ class JavaScriptBackend extends Backend { |
/// True when we enqueue the loadLibrary code. |
bool isLoadLibraryFunctionResolved = false; |
+ /// `true` if access to [BackendHelpers.invokeOnMethod] is supported. |
+ bool hasInvokeOnSupport = false; |
+ |
/// List of constants from metadata. If metadata must be preserved, |
/// these constants must be registered. |
final List<Dependency> metadataConstants = <Dependency>[]; |
@@ -1489,13 +1493,13 @@ class JavaScriptBackend extends Backend { |
} |
bool classNeedsRti(ClassElement cls) { |
- if (compiler.enabledRuntimeType) return true; |
+ if (compiler.resolverWorld.hasRuntimeTypeSupport) return true; |
return rti.classesNeedingRti.contains(cls.declaration); |
} |
bool classNeedsRtiField(ClassElement cls) { |
if (cls.rawType.typeArguments.isEmpty) return false; |
- if (compiler.enabledRuntimeType) return true; |
+ if (compiler.resolverWorld.hasRuntimeTypeSupport) return true; |
return rti.classesNeedingRti.contains(cls.declaration); |
} |
@@ -1512,7 +1516,7 @@ class JavaScriptBackend extends Backend { |
bool methodNeedsRti(FunctionElement function) { |
return rti.methodsNeedingRti.contains(function) || |
- compiler.enabledRuntimeType; |
+ compiler.resolverWorld.hasRuntimeTypeSupport; |
} |
/// Enqueue [e] in [enqueuer]. |
@@ -1571,8 +1575,9 @@ class JavaScriptBackend extends Backend { |
CodegenEnqueuer get codegenEnqueuer => compiler.enqueuer.codegen; |
- CodegenEnqueuer createCodegenEnqueuer(Compiler compiler) { |
- return new CodegenEnqueuer(compiler, const TreeShakingEnqueuerStrategy()); |
+ CodegenEnqueuer createCodegenEnqueuer(CompilerTask task, Compiler compiler) { |
+ return new CodegenEnqueuer( |
+ task, compiler, const TreeShakingEnqueuerStrategy()); |
} |
WorldImpact codegen(CodegenWorkItem work) { |
@@ -1646,11 +1651,11 @@ class JavaScriptBackend extends Backend { |
return worldImpact; |
} |
- native.NativeEnqueuer nativeResolutionEnqueuer(Enqueuer world) { |
+ native.NativeEnqueuer nativeResolutionEnqueuer() { |
return new native.NativeResolutionEnqueuer(compiler); |
} |
- native.NativeEnqueuer nativeCodegenEnqueuer(Enqueuer world) { |
+ native.NativeEnqueuer nativeCodegenEnqueuer() { |
return new native.NativeCodegenEnqueuer(compiler, emitter); |
} |
@@ -2342,11 +2347,13 @@ class JavaScriptBackend extends Backend { |
// |
// Return early if any elements are added to avoid counting the elements as |
// due to mirrors. |
- enqueuer.applyImpact(customElementsAnalysis.flush( |
- forResolution: enqueuer.isResolutionQueue)); |
enqueuer.applyImpact( |
+ compiler.impactStrategy, |
+ customElementsAnalysis.flush( |
+ forResolution: enqueuer.isResolutionQueue)); |
+ enqueuer.applyImpact(compiler.impactStrategy, |
lookupMapAnalysis.flush(forResolution: enqueuer.isResolutionQueue)); |
- enqueuer.applyImpact( |
+ enqueuer.applyImpact(compiler.impactStrategy, |
typeVariableHandler.flush(forResolution: enqueuer.isResolutionQueue)); |
if (!enqueuer.queueIsEmpty) return false; |
@@ -2420,7 +2427,7 @@ class JavaScriptBackend extends Backend { |
} |
metadataConstants.clear(); |
} |
- enqueuer.applyImpact(impactBuilder.flush()); |
+ enqueuer.applyImpact(compiler.impactStrategy, impactBuilder.flush()); |
} |
return true; |
} |
@@ -2545,7 +2552,7 @@ class JavaScriptBackend extends Backend { |
"@NoSideEffects() should always be combined with @NoInline."); |
} |
if (element == helpers.invokeOnMethod) { |
- compiler.enabledInvokeOn = true; |
+ hasInvokeOnSupport = true; |
} |
} |