Chromium Code Reviews| Index: sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart |
| =================================================================== |
| --- sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart (revision 27466) |
| +++ sdk/lib/_internal/compiler/implementation/js_backend/emitter.dart (working copy) |
| @@ -2547,6 +2547,7 @@ |
| List<String> parameters = <String>[]; |
| List<jsAst.Expression> arguments = <jsAst.Expression>[]; |
| + arguments.add(js('this')[fieldNames[0]]); |
| if (inInterceptor) { |
| arguments.add(js('this')[fieldNames[2]]); |
| } |
| @@ -2559,7 +2560,7 @@ |
| jsAst.Expression fun = js.fun( |
| parameters, |
| js.return_( |
| - js('this')[fieldNames[0]][js('this')[fieldNames[1]]](arguments))); |
| + js('this')[fieldNames[1]]['call'](arguments))); |
| boundClosureBuilder.addProperty(invocationName, fun); |
| addParameterStubs(callElement, boundClosureBuilder.addProperty); |
| @@ -2599,7 +2600,14 @@ |
| List<String> parameters = <String>[]; |
| List<jsAst.Expression> arguments = <jsAst.Expression>[]; |
| arguments.add(js('this')); |
| - arguments.add(js.string(targetName)); |
| + String className = backend.namer.isolateAccess(classElement); |
|
ahe
2013/09/16 12:26:40
Use elementAccess, not isolateAccess.
ngeoffray
2013/09/16 12:34:35
Done.
|
| + jsAst.VariableUse classReference = new jsAst.VariableUse(className); |
|
ahe
2013/09/16 12:26:40
And then don't wrap it in VariableUse.
ngeoffray
2013/09/16 12:34:35
Done.
|
| + jsAst.PropertyAccess prototype = |
| + new jsAst.PropertyAccess.field(classReference, "prototype"); |
| + jsAst.PropertyAccess method = |
| + new jsAst.PropertyAccess.field(prototype, targetName); |
|
ahe
2013/09/16 12:26:40
The above lines can be written as:
jsAst.Property
ngeoffray
2013/09/16 12:34:35
Done.
|
| + |
| + arguments.add(method); |
| if (inInterceptor) { |
| String receiverArg = fieldNames[2]; |
| parameters.add(receiverArg); |
| @@ -2608,6 +2616,7 @@ |
| // Put null in the intercepted receiver field. |
| arguments.add(new jsAst.LiteralNull()); |
| } |
| + arguments.add(js.string(targetName)); |
| jsAst.Expression getterFunction = js.fun( |
| parameters, js.return_(js(closureClass).newWith(arguments))); |