Index: pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart |
diff --git a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart |
index f4eb1528e7b6ce74ea1e44e2df6f33f8410c287f..19af31f3f9bc6114ca1677d8050beea8dd77d9af 100644 |
--- a/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart |
+++ b/pkg/compiler/lib/src/js_emitter/full_emitter/emitter.dart |
@@ -19,7 +19,13 @@ import '../../common_elements.dart' show CommonElements, ElementEnvironment; |
import '../../elements/resolution_types.dart' show ResolutionDartType; |
import '../../deferred_load.dart' show OutputUnit; |
import '../../elements/elements.dart' |
- show ClassElement, ConstructorBodyElement, LibraryElement, TypedefElement; |
+ show |
+ ClassElement, |
+ ConstructorBodyElement, |
+ FieldElement, |
+ LibraryElement, |
+ MethodElement, |
+ TypedefElement; |
import '../../elements/entities.dart'; |
import '../../elements/entity_utils.dart' as utils; |
import '../../elements/names.dart'; |
@@ -33,6 +39,7 @@ import '../../js_backend/js_backend.dart' |
show |
ConstantEmitter, |
JavaScriptBackend, |
+ JavaScriptConstantCompiler, |
Namer, |
SetterName, |
TypeVariableCodegenAnalysis; |
@@ -118,7 +125,6 @@ class Emitter extends js_emitter.EmitterBase { |
TypeTestRegistry get typeTestRegistry => task.typeTestRegistry; |
CommonElements get commonElements => _closedWorld.commonElements; |
ElementEnvironment get _elementEnvironment => _closedWorld.elementEnvironment; |
- CodegenWorldBuilder get _worldBuilder => compiler.codegenWorldBuilder; |
// The full code that is written to each hunk part-file. |
Map<OutputUnit, CodeOutput> outputBuffers = new Map<OutputUnit, CodeOutput>(); |
@@ -178,7 +184,6 @@ class Emitter extends js_emitter.EmitterBase { |
constantEmitter = new ConstantEmitter( |
compiler.options, |
_closedWorld.commonElements, |
- compiler.codegenWorldBuilder, |
compiler.backend.rtiNeed, |
compiler.backend.rtiEncoder, |
namer, |
@@ -298,7 +303,7 @@ class Emitter extends js_emitter.EmitterBase { |
} |
@override |
- jsAst.Expression isolateLazyInitializerAccess(FieldEntity element) { |
+ jsAst.Expression isolateLazyInitializerAccess(FieldElement element) { |
return jsAst.js('#.#', [ |
namer.globalObjectForMember(element), |
namer.lazyInitializerName(element) |
@@ -306,7 +311,7 @@ class Emitter extends js_emitter.EmitterBase { |
} |
@override |
- jsAst.Expression isolateStaticClosureAccess(FunctionEntity element) { |
+ jsAst.Expression isolateStaticClosureAccess(MethodElement element) { |
return jsAst.js('#.#()', [ |
namer.globalObjectForMember(element), |
namer.staticClosureName(element) |
@@ -628,22 +633,22 @@ class Emitter extends js_emitter.EmitterBase { |
jsAst.Statement buildStaticNonFinalFieldInitializations( |
OutputUnit outputUnit) { |
jsAst.Statement buildInitialization( |
- FieldEntity element, jsAst.Expression initialValue) { |
+ FieldElement element, jsAst.Expression initialValue) { |
return js.statement('${namer.staticStateHolder}.# = #', |
[namer.globalPropertyNameForMember(element), initialValue]); |
} |
bool inMainUnit = (outputUnit == compiler.deferredLoadTask.mainOutputUnit); |
+ JavaScriptConstantCompiler handler = backend.constants; |
List<jsAst.Statement> parts = <jsAst.Statement>[]; |
Iterable<FieldEntity> fields = outputStaticNonFinalFieldLists[outputUnit]; |
// If the outputUnit does not contain any static non-final fields, then |
// [fields] is `null`. |
if (fields != null) { |
- for (FieldEntity element in fields) { |
+ for (FieldElement element in fields) { |
reporter.withCurrentElement(element, () { |
- ConstantValue constant = |
- _worldBuilder.getConstantFieldInitializer(element); |
+ ConstantValue constant = handler.getConstantValue(element.constant); |
parts.add(buildInitialization(element, constantReference(constant))); |
}); |
} |