Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(168)

Unified Diff: sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart

Issue 246633006: Revert "JS templates" (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
diff --git a/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart b/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
index 52284600962a8bf3694d1ff7340d890fe107884c..6866b254348c46b31d8d3432935bfee756289371 100644
--- a/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart
@@ -54,9 +54,9 @@ class NativeEmitter {
return backend.namer.isolateAccess(element);
}
- jsAst.Expression get defPropFunction {
+ String get defPropName {
Element element = compiler.findHelper('defineProperty');
- return backend.namer.elementAccess(element);
+ return backend.namer.isolateAccess(element);
}
String get toStringHelperName {
@@ -355,7 +355,9 @@ class NativeEmitter {
FunctionSignature parameters = member.functionSignature;
Element converter =
compiler.findHelper('convertDartClosureToJS');
- jsAst.Expression closureConverter = backend.namer.elementAccess(converter);
+ String closureConverter = backend.namer.isolateAccess(converter);
+ Set<String> stubParameterNames = new Set<String>.from(
+ stubParameters.map((param) => param.name));
parameters.forEachParameter((ParameterElement parameter) {
String name = parameter.name;
// If [name] is not in [stubParameters], then the parameter is an optional
@@ -369,8 +371,7 @@ class NativeEmitter {
FunctionType functionType = type;
int arity = functionType.computeArity();
statements.add(
- js.statement('# = #(#, $arity)',
- [name, closureConverter, name]));
+ js('$name = $closureConverter($name, $arity)').toStatement());
break;
}
}
@@ -417,8 +418,7 @@ class NativeEmitter {
arguments = argumentsBuffer.sublist(0,
indexOfLastOptionalArgumentInParameters + 1);
}
- statements.add(
- js.statement('return #.#(#)', [receiver, target, arguments]));
+ statements.add(new jsAst.Return(receiver[target](arguments)));
return statements;
}
@@ -477,13 +477,17 @@ class NativeEmitter {
// If we have any properties to add to Object.prototype, we run
// through them and add them using defineProperty.
if (!objectProperties.isEmpty) {
- jsAst.Expression init = js(r'''
- (function(table) {
- for(var key in table)
- #(Object.prototype, key, table[key]);
- })(#)''',
- [ defPropFunction,
- new jsAst.ObjectInitializer(objectProperties)]);
+ jsAst.Expression init =
+ js.fun(['table'],
+ new jsAst.ForIn(
+ new jsAst.VariableDeclarationList(
+ [new jsAst.VariableInitialization(
+ new jsAst.VariableDeclaration('key'),
+ null)]),
+ js('table'),
+ new jsAst.ExpressionStatement(
+ js('$defPropName(Object.prototype, key, table[key])'))))(
+ new jsAst.ObjectInitializer(objectProperties));
if (emitter.compiler.enableMinification) targetBuffer.add(';');
targetBuffer.add(jsAst.prettyPrint(

Powered by Google App Engine
This is Rietveld 408576698