Index: dart/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
diff --git a/dart/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart b/dart/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
index 86717aed749ec162fc5a31a50342a8ffb065f2f8..896044deae998e6131667f0e52885fc8b1710c73 100644 |
--- a/dart/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
+++ b/dart/sdk/lib/_internal/compiler/implementation/js_backend/constant_emitter.dart |
@@ -19,7 +19,7 @@ class ConstantEmitter { |
* canonical name unless the constant can be emitted multiple times (as for |
* numbers and strings). |
*/ |
- js.Expression reference(Constant constant) { |
+ jsAst.Expression reference(Constant constant) { |
return _referenceEmitter.generate(constant); |
} |
@@ -27,14 +27,14 @@ class ConstantEmitter { |
* Constructs an expression like [reference], but the expression is valid |
* during isolate initialization. |
*/ |
- js.Expression referenceInInitializationContext(Constant constant) { |
+ jsAst.Expression referenceInInitializationContext(Constant constant) { |
return _referenceEmitter.generateInInitializationContext(constant); |
} |
/** |
* Constructs an expression used to initialize a canonicalized constant. |
*/ |
- js.Expression initializationExpression(Constant constant) { |
+ jsAst.Expression initializationExpression(Constant constant) { |
return _initializerEmitter.generate(constant); |
} |
} |
@@ -43,74 +43,74 @@ class ConstantEmitter { |
* Visitor for generating JavaScript expressions to refer to [Constant]s. |
* Do not use directly, use methods from [ConstantEmitter]. |
*/ |
-class ConstantReferenceEmitter implements ConstantVisitor<js.Expression> { |
+class ConstantReferenceEmitter implements ConstantVisitor<jsAst.Expression> { |
final Compiler compiler; |
final Namer namer; |
bool inIsolateInitializationContext = false; |
ConstantReferenceEmitter(this.compiler, this.namer); |
- js.Expression generate(Constant constant) { |
+ jsAst.Expression generate(Constant constant) { |
inIsolateInitializationContext = false; |
return _visit(constant); |
} |
- js.Expression generateInInitializationContext(Constant constant) { |
+ jsAst.Expression generateInInitializationContext(Constant constant) { |
inIsolateInitializationContext = true; |
return _visit(constant); |
} |
- js.Expression _visit(Constant constant) { |
+ jsAst.Expression _visit(Constant constant) { |
return constant.accept(this); |
} |
- js.Expression visitSentinel(SentinelConstant constant) { |
- return new js.VariableUse(namer.CURRENT_ISOLATE); |
+ jsAst.Expression visitSentinel(SentinelConstant constant) { |
+ return new jsAst.VariableUse(namer.CURRENT_ISOLATE); |
} |
- js.Expression visitFunction(FunctionConstant constant) { |
+ jsAst.Expression visitFunction(FunctionConstant constant) { |
return inIsolateInitializationContext |
- ? new js.VariableUse(namer.isolatePropertiesAccess(constant.element)) |
- : new js.VariableUse(namer.isolateAccess(constant.element)); |
+ ? new jsAst.VariableUse(namer.isolatePropertiesAccess(constant.element)) |
+ : new jsAst.VariableUse(namer.isolateAccess(constant.element)); |
} |
- js.Expression visitNull(NullConstant constant) { |
- return new js.LiteralNull(); |
+ jsAst.Expression visitNull(NullConstant constant) { |
+ return new jsAst.LiteralNull(); |
} |
- js.Expression visitInt(IntConstant constant) { |
- return new js.LiteralNumber('${constant.value}'); |
+ jsAst.Expression visitInt(IntConstant constant) { |
+ return new jsAst.LiteralNumber('${constant.value}'); |
} |
- js.Expression visitDouble(DoubleConstant constant) { |
+ jsAst.Expression visitDouble(DoubleConstant constant) { |
double value = constant.value; |
if (value.isNaN) { |
- return new js.LiteralNumber("(0/0)"); |
+ return new jsAst.LiteralNumber("(0/0)"); |
} else if (value == double.INFINITY) { |
- return new js.LiteralNumber("(1/0)"); |
+ return new jsAst.LiteralNumber("(1/0)"); |
} else if (value == -double.INFINITY) { |
- return new js.LiteralNumber("(-1/0)"); |
+ return new jsAst.LiteralNumber("(-1/0)"); |
} else { |
- return new js.LiteralNumber("$value"); |
+ return new jsAst.LiteralNumber("$value"); |
} |
} |
- js.Expression visitTrue(TrueConstant constant) { |
+ jsAst.Expression visitTrue(TrueConstant constant) { |
if (compiler.enableMinification) { |
// Use !0 for true. |
- return new js.Prefix("!", new js.LiteralNumber("0")); |
+ return new jsAst.Prefix("!", new jsAst.LiteralNumber("0")); |
} else { |
- return new js.LiteralBool(true); |
+ return new jsAst.LiteralBool(true); |
} |
} |
- js.Expression visitFalse(FalseConstant constant) { |
+ jsAst.Expression visitFalse(FalseConstant constant) { |
if (compiler.enableMinification) { |
// Use !1 for false. |
- return new js.Prefix("!", new js.LiteralNumber("1")); |
+ return new jsAst.Prefix("!", new jsAst.LiteralNumber("1")); |
} else { |
- return new js.LiteralBool(false); |
+ return new jsAst.LiteralBool(false); |
} |
} |
@@ -119,44 +119,44 @@ class ConstantReferenceEmitter implements ConstantVisitor<js.Expression> { |
* a form that is valid as JavaScript string literal content. |
* The string is assumed quoted by double quote characters. |
*/ |
- js.Expression visitString(StringConstant constant) { |
+ jsAst.Expression visitString(StringConstant constant) { |
// TODO(sra): If the string is long *and repeated* (and not on a hot path) |
// then it should be assigned to a name. We don't have reference counts (or |
// profile information) here, so this is the wrong place. |
StringBuffer sb = new StringBuffer(); |
writeJsonEscapedCharsOn(constant.value.slowToString(), sb); |
- return new js.LiteralString('"$sb"'); |
+ return new jsAst.LiteralString('"$sb"'); |
} |
- js.Expression emitCanonicalVersion(Constant constant) { |
+ jsAst.Expression emitCanonicalVersion(Constant constant) { |
String name = namer.constantName(constant); |
if (inIsolateInitializationContext) { |
// $isolateName.$isolatePropertiesName.$name |
- return new js.PropertyAccess.field( |
- new js.PropertyAccess.field( |
- new js.VariableUse(namer.isolateName), |
+ return new jsAst.PropertyAccess.field( |
+ new jsAst.PropertyAccess.field( |
+ new jsAst.VariableUse(namer.isolateName), |
namer.isolatePropertiesName), |
name); |
} else { |
- return new js.PropertyAccess.field( |
- new js.VariableUse(namer.CURRENT_ISOLATE), |
+ return new jsAst.PropertyAccess.field( |
+ new jsAst.VariableUse(namer.CURRENT_ISOLATE), |
name); |
} |
} |
- js.Expression visitList(ListConstant constant) { |
+ jsAst.Expression visitList(ListConstant constant) { |
return emitCanonicalVersion(constant); |
} |
- js.Expression visitMap(MapConstant constant) { |
+ jsAst.Expression visitMap(MapConstant constant) { |
return emitCanonicalVersion(constant); |
} |
- js.Expression visitType(TypeConstant constant) { |
+ jsAst.Expression visitType(TypeConstant constant) { |
return emitCanonicalVersion(constant); |
} |
- js.Expression visitConstructed(ConstructedConstant constant) { |
+ jsAst.Expression visitConstructed(ConstructedConstant constant) { |
return emitCanonicalVersion(constant); |
} |
} |
@@ -165,90 +165,90 @@ class ConstantReferenceEmitter implements ConstantVisitor<js.Expression> { |
* Visitor for generating JavaScript expressions to initialize [Constant]s. |
* Do not use directly; use methods from [ConstantEmitter]. |
*/ |
-class ConstantInitializerEmitter implements ConstantVisitor<js.Expression> { |
+class ConstantInitializerEmitter implements ConstantVisitor<jsAst.Expression> { |
final Compiler compiler; |
final Namer namer; |
final ConstantReferenceEmitter referenceEmitter; |
ConstantInitializerEmitter(this.compiler, this.namer, this.referenceEmitter); |
- js.Expression generate(Constant constant) { |
+ jsAst.Expression generate(Constant constant) { |
return _visit(constant); |
} |
- js.Expression _visit(Constant constant) { |
+ jsAst.Expression _visit(Constant constant) { |
return constant.accept(this); |
} |
- js.Expression _reference(Constant constant) { |
+ jsAst.Expression _reference(Constant constant) { |
return referenceEmitter.generateInInitializationContext(constant); |
} |
- js.Expression visitSentinel(SentinelConstant constant) { |
+ jsAst.Expression visitSentinel(SentinelConstant constant) { |
compiler.internalError( |
"The parameter sentinel constant does not need specific JS code"); |
} |
- js.Expression visitFunction(FunctionConstant constant) { |
+ jsAst.Expression visitFunction(FunctionConstant constant) { |
compiler.internalError( |
"The function constant does not need specific JS code"); |
} |
- js.Expression visitNull(NullConstant constant) { |
+ jsAst.Expression visitNull(NullConstant constant) { |
return _reference(constant); |
} |
- js.Expression visitInt(IntConstant constant) { |
+ jsAst.Expression visitInt(IntConstant constant) { |
return _reference(constant); |
} |
- js.Expression visitDouble(DoubleConstant constant) { |
+ jsAst.Expression visitDouble(DoubleConstant constant) { |
return _reference(constant); |
} |
- js.Expression visitTrue(TrueConstant constant) { |
+ jsAst.Expression visitTrue(TrueConstant constant) { |
return _reference(constant); |
} |
- js.Expression visitFalse(FalseConstant constant) { |
+ jsAst.Expression visitFalse(FalseConstant constant) { |
return _reference(constant); |
} |
- js.Expression visitString(StringConstant constant) { |
+ jsAst.Expression visitString(StringConstant constant) { |
// TODO(sra): Some larger strings are worth sharing. |
return _reference(constant); |
} |
- js.Expression visitList(ListConstant constant) { |
- return new js.Call( |
- new js.PropertyAccess.field( |
- new js.VariableUse(namer.isolateName), |
+ jsAst.Expression visitList(ListConstant constant) { |
+ return new jsAst.Call( |
+ new jsAst.PropertyAccess.field( |
+ new jsAst.VariableUse(namer.isolateName), |
'makeConstantList'), |
- [new js.ArrayInitializer.from(_array(constant.entries))]); |
+ [new jsAst.ArrayInitializer.from(_array(constant.entries))]); |
} |
String getJsConstructor(ClassElement element) { |
return namer.isolatePropertiesAccess(element); |
} |
- js.Expression visitMap(MapConstant constant) { |
- js.Expression jsMap() { |
- List<js.Property> properties = <js.Property>[]; |
+ jsAst.Expression visitMap(MapConstant constant) { |
+ jsAst.Expression jsMap() { |
+ List<jsAst.Property> properties = <jsAst.Property>[]; |
int valueIndex = 0; |
for (int i = 0; i < constant.keys.entries.length; i++) { |
StringConstant key = constant.keys.entries[i]; |
if (key.value == MapConstant.PROTO_PROPERTY) continue; |
// Keys in literal maps must be emitted in place. |
- js.Literal keyExpression = _visit(key); |
- js.Expression valueExpression = |
+ jsAst.Literal keyExpression = _visit(key); |
+ jsAst.Expression valueExpression = |
_reference(constant.values[valueIndex++]); |
- properties.add(new js.Property(keyExpression, valueExpression)); |
+ properties.add(new jsAst.Property(keyExpression, valueExpression)); |
} |
if (valueIndex != constant.values.length) { |
compiler.internalError("Bad value count."); |
} |
- return new js.ObjectInitializer(properties); |
+ return new jsAst.ObjectInitializer(properties); |
} |
void badFieldCountError() { |
@@ -258,7 +258,7 @@ class ConstantInitializerEmitter implements ConstantVisitor<js.Expression> { |
ClassElement classElement = constant.type.element; |
- List<js.Expression> arguments = <js.Expression>[]; |
+ List<jsAst.Expression> arguments = <jsAst.Expression>[]; |
// The arguments of the JavaScript constructor for any given Dart class |
// are in the same order as the members of the class element. |
@@ -267,7 +267,7 @@ class ConstantInitializerEmitter implements ConstantVisitor<js.Expression> { |
(ClassElement enclosing, Element field) { |
if (field.name == MapConstant.LENGTH_NAME) { |
arguments.add( |
- new js.LiteralNumber('${constant.keys.entries.length}')); |
+ new jsAst.LiteralNumber('${constant.keys.entries.length}')); |
} else if (field.name == MapConstant.JS_OBJECT_NAME) { |
arguments.add(jsMap()); |
} else if (field.name == MapConstant.KEYS_NAME) { |
@@ -288,12 +288,12 @@ class ConstantInitializerEmitter implements ConstantVisitor<js.Expression> { |
badFieldCountError(); |
} |
- return new js.New( |
- new js.VariableUse(getJsConstructor(classElement)), |
+ return new jsAst.New( |
+ new jsAst.VariableUse(getJsConstructor(classElement)), |
arguments); |
} |
- js.Expression visitType(TypeConstant constant) { |
+ jsAst.Expression visitType(TypeConstant constant) { |
SourceString helperSourceName = const SourceString('createRuntimeType'); |
Element helper = compiler.findHelper(helperSourceName); |
JavaScriptBackend backend = compiler.backend; |
@@ -301,22 +301,22 @@ class ConstantInitializerEmitter implements ConstantVisitor<js.Expression> { |
DartType type = constant.representedType; |
Element element = type.element; |
String name = backend.rti.getRawTypeRepresentation(type); |
- js.Expression typeName = new js.LiteralString("'$name'"); |
- return new js.Call( |
- new js.PropertyAccess.field( |
- new js.VariableUse(namer.CURRENT_ISOLATE), |
+ jsAst.Expression typeName = new jsAst.LiteralString("'$name'"); |
+ return new jsAst.Call( |
+ new jsAst.PropertyAccess.field( |
+ new jsAst.VariableUse(namer.CURRENT_ISOLATE), |
helperName), |
[typeName]); |
} |
- js.Expression visitConstructed(ConstructedConstant constant) { |
- return new js.New( |
- new js.VariableUse(getJsConstructor(constant.type.element)), |
+ jsAst.Expression visitConstructed(ConstructedConstant constant) { |
+ return new jsAst.New( |
+ new jsAst.VariableUse(getJsConstructor(constant.type.element)), |
_array(constant.fields)); |
} |
- List<js.Expression> _array(List<Constant> values) { |
- List<js.Expression> valueList = <js.Expression>[]; |
+ List<jsAst.Expression> _array(List<Constant> values) { |
+ List<jsAst.Expression> valueList = <jsAst.Expression>[]; |
for (int i = 0; i < values.length; i++) { |
valueList.add(_reference(values[i])); |
} |