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 6866b254348c46b31d8d3432935bfee756289371..207b9575b85a03f00a7ad5b03d5e564f9bab1415 100644 |
--- a/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart |
+++ b/sdk/lib/_internal/compiler/implementation/js_backend/native_emitter.dart |
@@ -355,9 +355,7 @@ class NativeEmitter { |
FunctionSignature parameters = member.functionSignature; |
Element converter = |
compiler.findHelper('convertDartClosureToJS'); |
- String closureConverter = backend.namer.isolateAccess(converter); |
- Set<String> stubParameterNames = new Set<String>.from( |
- stubParameters.map((param) => param.name)); |
+ jsAst.Expression closureConverter = backend.namer.elementAccess(converter); |
parameters.forEachParameter((ParameterElement parameter) { |
String name = parameter.name; |
// If [name] is not in [stubParameters], then the parameter is an optional |
@@ -371,7 +369,8 @@ class NativeEmitter { |
FunctionType functionType = type; |
int arity = functionType.computeArity(); |
statements.add( |
- js('$name = $closureConverter($name, $arity)').toStatement()); |
+ js.statement('# = #(#, $arity)', |
+ [name, closureConverter, name])); |
break; |
} |
} |
@@ -418,7 +417,9 @@ class NativeEmitter { |
arguments = argumentsBuffer.sublist(0, |
indexOfLastOptionalArgumentInParameters + 1); |
} |
- statements.add(new jsAst.Return(receiver[target](arguments))); |
+ //statements.add(new jsAst.Return(receiver[target](arguments))); |
floitsch
2014/04/22 16:11:18
dead code.
sra1
2014/04/23 02:33:50
Done.
|
+ statements.add( |
+ js.statement('return #.#(#)', [receiver, target, arguments])); |
return statements; |
} |
@@ -477,17 +478,12 @@ 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.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)); |
+ jsAst.Expression init = js(''' |
+ (function(table) { |
+ for(var key in table) |
+ $defPropName(Object.prototype, key, table[key]); |
floitsch
2014/04/22 16:11:18
We could make defPropAccess a template, and thus a
sra1
2014/04/23 02:33:50
Done.
|
+ })(#)''', |
+ new jsAst.ObjectInitializer(objectProperties)); |
if (emitter.compiler.enableMinification) targetBuffer.add(';'); |
targetBuffer.add(jsAst.prettyPrint( |