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)); |
} |