Index: lib/compiler/implementation/js_backend/emitter.dart |
diff --git a/lib/compiler/implementation/js_backend/emitter.dart b/lib/compiler/implementation/js_backend/emitter.dart |
index 2bd01d4136b685df7d348fe7bffd17ed22be9fb9..4be2c83890fd8a4cd57c5e37dc3d93ebf2496d82 100644 |
--- a/lib/compiler/implementation/js_backend/emitter.dart |
+++ b/lib/compiler/implementation/js_backend/emitter.dart |
@@ -34,7 +34,6 @@ class CodeEmitterTask extends CompilerTask { |
bool needsClosureClass = false; |
bool needsLazyInitializer = false; |
final Namer namer; |
- ConstantEmitter constantEmitter; |
NativeEmitter nativeEmitter; |
CodeBuffer boundClosureBuffer; |
CodeBuffer mainBuffer; |
@@ -46,27 +45,16 @@ class CodeEmitterTask extends CompilerTask { |
final bool generateSourceMap; |
- CodeEmitterTask(Compiler compiler, Namer namer, |
+ CodeEmitterTask(Compiler compiler, this.namer, |
[bool generateSourceMap = false]) |
: boundClosureBuffer = new CodeBuffer(), |
mainBuffer = new CodeBuffer(), |
- this.namer = namer, |
boundClosureCache = new Map<int, String>(), |
generateSourceMap = generateSourceMap, |
- constantEmitter = new ConstantEmitter(compiler, namer), |
super(compiler) { |
nativeEmitter = new NativeEmitter(this); |
} |
- void writeConstantToBuffer(Constant value, CodeBuffer buffer, |
- [emitCanonicalVersion = true]) { |
- if (emitCanonicalVersion) { |
- constantEmitter.emitCanonicalVersionOfConstant(value, buffer); |
- } else { |
- constantEmitter.emitJavaScriptCodeForConstant(value, buffer); |
- } |
- } |
- |
String get name => 'CodeEmitter'; |
String get defineClassName |
@@ -410,7 +398,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) { |
// Note that [elements] may be null for a synthetized [member]. |
} else if (elements != null && elements.isParameterChecked(element)) { |
CodeBuffer argumentBuffer = new CodeBuffer(); |
- writeConstantToBuffer(SentinelConstant.SENTINEL, argumentBuffer); |
+ handler.writeConstant(argumentBuffer, SentinelConstant.SENTINEL); |
argumentsBuffer[count] = argumentBuffer.toString(); |
} else { |
Constant value = handler.initialVariableValues[element]; |
@@ -423,7 +411,7 @@ function(prototype, staticName, fieldName, getterName, lazyValue) { |
indexOfLastOptionalArgumentInParameters = count; |
} |
CodeBuffer argumentBuffer = new CodeBuffer(); |
- writeConstantToBuffer(value, argumentBuffer); |
+ handler.writeConstant(argumentBuffer, value); |
argumentsBuffer[count] = argumentBuffer.toString(); |
} |
} |
@@ -934,8 +922,7 @@ $classesCollector.$mangledName = {'': |
for (Element element in staticNonFinalFields) { |
buffer.add('$isolateProperties.${namer.getName(element)} = '); |
compiler.withCurrentElement(element, () { |
- Constant initialValue = handler.getInitialValueFor(element); |
- writeConstantToBuffer(initialValue, buffer); |
+ handler.writeJsCodeForVariable(buffer, element); |
}); |
buffer.add(';\n'); |
} |
@@ -976,10 +963,7 @@ $classesCollector.$mangledName = {'': |
List<Constant> constants = handler.getConstantsForEmission(); |
bool addedMakeConstantList = false; |
for (Constant constant in constants) { |
- // No need to emit functions. We already did that. |
- if (constant.isFunction()) continue; |
- |
- String name = namer.constantName(constant); |
+ String name = handler.getNameForConstant(constant); |
// The name is null when the constant is already a JS constant. |
// TODO(floitsch): every constant should be registered, so that we can |
// share the ones that take up too much space (like some strings). |
@@ -989,7 +973,7 @@ $classesCollector.$mangledName = {'': |
emitMakeConstantList(buffer); |
} |
buffer.add('$isolateProperties.$name = '); |
- writeConstantToBuffer(constant, buffer, emitCanonicalVersion: false); |
+ handler.writeJsCode(buffer, constant); |
buffer.add(';\n'); |
} |
} |