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 28178793c2498caf4f9f0f7a74393a0c16839527..541cf9e47d07a1f18428b35fa216df47e8fdbffe 100644 |
--- a/pkg/compiler/lib/src/js_backend/backend.dart |
+++ b/pkg/compiler/lib/src/js_backend/backend.dart |
@@ -15,7 +15,7 @@ import '../compiler.dart' show Compiler; |
import '../constants/constant_system.dart'; |
import '../constants/expressions.dart'; |
import '../constants/values.dart'; |
-import '../common_elements.dart' show CommonElements; |
+import '../common_elements.dart' show CommonElements, ElementEnvironment; |
import '../deferred_load.dart' show DeferredLoadTask; |
import '../dump_info.dart' show DumpInfoTask; |
import '../elements/elements.dart'; |
@@ -452,8 +452,10 @@ class JavaScriptBackend { |
bool useNewSourceInfo: false, |
bool useKernel: false}) |
: _rti = new RuntimeTypesImpl( |
- compiler.elementEnvironment, compiler.frontendStrategy.dartTypes), |
- optimizerHints = new OptimizerHintsForTests(compiler.elementEnvironment, |
+ compiler.frontendStrategy.elementEnvironment, |
+ compiler.frontendStrategy.dartTypes), |
+ optimizerHints = new OptimizerHintsForTests( |
+ compiler.frontendStrategy.elementEnvironment, |
compiler.frontendStrategy.commonElements), |
this.sourceInformationStrategy = |
compiler.backendStrategy.sourceInformationStrategy, |
@@ -471,12 +473,14 @@ class JavaScriptBackend { |
new CodeEmitterTask(compiler, generateSourceMap, useStartupEmitter); |
_typeVariableResolutionAnalysis = new TypeVariableResolutionAnalysis( |
- compiler.elementEnvironment, impacts, _backendUsageBuilder); |
+ compiler.frontendStrategy.elementEnvironment, |
+ impacts, |
+ _backendUsageBuilder); |
jsInteropAnalysis = new JsInteropAnalysis(this); |
_mirrorsResolutionAnalysis = |
compiler.frontendStrategy.createMirrorsResolutionAnalysis(this); |
- lookupMapResolutionAnalysis = |
- new LookupMapResolutionAnalysis(reporter, compiler.elementEnvironment); |
+ lookupMapResolutionAnalysis = new LookupMapResolutionAnalysis( |
+ reporter, compiler.frontendStrategy.elementEnvironment); |
noSuchMethodRegistry = new NoSuchMethodRegistry( |
commonElements, compiler.frontendStrategy.createNoSuchMethodResolver()); |
@@ -732,7 +736,7 @@ class JavaScriptBackend { |
ClosedWorld closedWorld, ClosedWorldRefiner closedWorldRefiner) { |
for (MemberEntity entity |
in compiler.enqueuer.resolution.processedEntities) { |
- processAnnotations( |
+ processAnnotations(closedWorld.elementEnvironment, |
closedWorld.commonElements, entity, closedWorldRefiner); |
} |
mirrorsDataBuilder.computeMembersNeededForReflection( |
@@ -781,12 +785,13 @@ class JavaScriptBackend { |
ResolutionEnqueuer createResolutionEnqueuer( |
CompilerTask task, Compiler compiler) { |
+ ElementEnvironment elementEnvironment = |
+ compiler.frontendStrategy.elementEnvironment; |
CommonElements commonElements = compiler.frontendStrategy.commonElements; |
- _nativeBasicData = |
- nativeBasicDataBuilder.close(compiler.elementEnvironment); |
+ _nativeBasicData = nativeBasicDataBuilder.close(elementEnvironment); |
_nativeResolutionEnqueuer = new native.NativeResolutionEnqueuer( |
compiler.options, |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
compiler.frontendStrategy.dartTypes, |
_backendUsageBuilder, |
@@ -794,13 +799,13 @@ class JavaScriptBackend { |
_nativeDataBuilder = new NativeDataBuilderImpl(nativeBasicData); |
_customElementsResolutionAnalysis = new CustomElementsResolutionAnalysis( |
constantSystem, |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
nativeBasicData, |
_backendUsageBuilder); |
impactTransformer = new JavaScriptImpactTransformer( |
compiler.options, |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
impacts, |
nativeBasicData, |
@@ -811,7 +816,7 @@ class JavaScriptBackend { |
rtiNeedBuilder); |
InterceptorDataBuilder interceptorDataBuilder = |
new InterceptorDataBuilderImpl( |
- nativeBasicData, compiler.elementEnvironment, commonElements); |
+ nativeBasicData, elementEnvironment, commonElements); |
return new ResolutionEnqueuer( |
task, |
compiler.options, |
@@ -821,7 +826,7 @@ class JavaScriptBackend { |
: const TreeShakingEnqueuerStrategy(), |
new ResolutionEnqueuerListener( |
compiler.options, |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
impacts, |
nativeBasicData, |
@@ -850,25 +855,23 @@ class JavaScriptBackend { |
/// Creates an [Enqueuer] for code generation specific to this backend. |
CodegenEnqueuer createCodegenEnqueuer( |
CompilerTask task, Compiler compiler, ClosedWorld closedWorld) { |
+ ElementEnvironment elementEnvironment = closedWorld.elementEnvironment; |
CommonElements commonElements = closedWorld.commonElements; |
_typeVariableCodegenAnalysis = new TypeVariableCodegenAnalysis( |
- compiler.elementEnvironment, this, commonElements, mirrorsData); |
+ closedWorld.elementEnvironment, this, commonElements, mirrorsData); |
_lookupMapAnalysis = new LookupMapAnalysis( |
reporter, |
constantSystem, |
constants, |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
lookupMapResolutionAnalysis); |
_mirrorsCodegenAnalysis = mirrorsResolutionAnalysis.close(); |
_customElementsCodegenAnalysis = new CustomElementsCodegenAnalysis( |
- constantSystem, |
- commonElements, |
- compiler.elementEnvironment, |
- nativeBasicData); |
+ constantSystem, commonElements, elementEnvironment, nativeBasicData); |
_nativeCodegenEnqueuer = new native.NativeCodegenEnqueuer( |
compiler.options, |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
compiler.frontendStrategy.dartTypes, |
emitter, |
@@ -882,7 +885,7 @@ class JavaScriptBackend { |
nativeBasicData, closedWorld, const TypeMaskStrategy()), |
compiler.backendStrategy.createCodegenWorkItemBuilder(closedWorld), |
new CodegenEnqueuerListener( |
- compiler.elementEnvironment, |
+ elementEnvironment, |
commonElements, |
impacts, |
closedWorld.backendUsage, |
@@ -1063,11 +1066,11 @@ class JavaScriptBackend { |
_namer = determineNamer(closedWorld, codegenWorldBuilder); |
tracer = new Tracer(closedWorld, namer, compiler); |
_rtiEncoder = _namer.rtiEncoder = new RuntimeTypesEncoderImpl( |
- namer, compiler.elementEnvironment, closedWorld.commonElements); |
+ namer, closedWorld.elementEnvironment, closedWorld.commonElements); |
emitter.createEmitter(namer, closedWorld, codegenWorldBuilder); |
_codegenImpactTransformer = new CodegenImpactTransformer( |
compiler.options, |
- compiler.elementEnvironment, |
+ closedWorld.elementEnvironment, |
closedWorld.commonElements, |
impacts, |
checkedModeHelpers, |
@@ -1109,7 +1112,10 @@ class JavaScriptBackend { |
/// Process backend specific annotations. |
// TODO(johnniwinther): Merge this with [AnnotationProcessor] and use |
// [ElementEnvironment.getMemberMetadata] in [AnnotationProcessor]. |
- void processAnnotations(CommonElements commonElements, MemberEntity element, |
+ void processAnnotations( |
+ ElementEnvironment elementEnvironment, |
+ CommonElements commonElements, |
+ MemberEntity element, |
ClosedWorldRefiner closedWorldRefiner) { |
if (element is MemberElement && element.isMalformed) { |
// Elements that are marked as malformed during parsing or resolution |
@@ -1135,7 +1141,7 @@ class JavaScriptBackend { |
bool hasNoThrows = false; |
bool hasNoSideEffects = false; |
for (ConstantValue constantValue |
- in compiler.elementEnvironment.getMemberMetadata(method)) { |
+ in elementEnvironment.getMemberMetadata(method)) { |
if (!constantValue.isConstructedObject) continue; |
ObjectConstantValue value = constantValue; |
ClassEntity cls = value.type.element; |