Chromium Code Reviews| Index: pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| diff --git a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| index 5375526aa16376709e6be2da8ac194647e7ddf97..69eb8c8df2679473a1eb48b86e197d9af6c2d4db 100644 |
| --- a/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| +++ b/pkg/compiler/lib/src/js_backend/codegen/codegen.dart |
| @@ -16,13 +16,19 @@ import '../../elements/elements.dart'; |
| import '../../io/source_information.dart' show SourceInformation; |
| import '../../js/js.dart' as js; |
| import '../../tree_ir/tree_ir_nodes.dart' as tree_ir; |
| -import '../../tree_ir/tree_ir_nodes.dart' show BuiltinOperator; |
| +import '../../tree_ir/tree_ir_nodes.dart' show BuiltinOperator, BuiltinMethod; |
| import '../../types/types.dart' show TypeMask; |
| import '../../universe/universe.dart' show |
| Selector, |
| UniverseSelector; |
| import '../../util/maplet.dart'; |
| +/// The JS name of a built-in method. |
| +final Map<BuiltinMethod, String> BuiltinMethodName = <BuiltinMethod, String>{ |
|
karlklose
2015/08/12 13:00:46
Identifiers for globals should start with a lower
asgerf
2015/08/12 13:29:39
Done. I also decided to make it static to put it c
|
| + BuiltinMethod.Push: 'push', |
| + BuiltinMethod.Pop: 'pop', |
| +}; |
| + |
| class CodegenBailout { |
| final tree_ir.Node node; |
| final String reason; |
| @@ -834,6 +840,14 @@ class CodeGenerator extends tree_ir.StatementVisitor |
| } |
| @override |
| + js.Expression visitApplyBuiltinMethod(tree_ir.ApplyBuiltinMethod node) { |
| + String name = BuiltinMethodName[node.method]; |
| + js.Expression receiver = visitExpression(node.receiver); |
| + List<js.Expression> args = visitExpressionList(node.arguments); |
| + return js.js('#.#(#)', [receiver, name, args]); |
| + } |
| + |
| + @override |
| js.Expression visitAwait(tree_ir.Await node) { |
| return new js.Await(visitExpression(node.input)); |
| } |