| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library code_generator; | 5 library code_generator; |
| 6 | 6 |
| 7 import 'glue.dart'; | 7 import 'glue.dart'; |
| 8 | 8 |
| 9 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir; | 9 import '../../tree_ir/tree_ir_nodes.dart' as tree_ir; |
| 10 import '../../tree_ir/tree_ir_nodes.dart' show BuiltinOperator; | 10 import '../../tree_ir/tree_ir_nodes.dart' show BuiltinOperator; |
| (...skipping 617 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 628 glue.registerUseInterceptorInCodegen(); | 628 glue.registerUseInterceptorInCodegen(); |
| 629 registry.registerSpecializedGetInterceptor(node.interceptedClasses); | 629 registry.registerSpecializedGetInterceptor(node.interceptedClasses); |
| 630 js.Name helperName = glue.getInterceptorName(node.interceptedClasses); | 630 js.Name helperName = glue.getInterceptorName(node.interceptedClasses); |
| 631 js.Expression globalHolder = glue.getInterceptorLibrary(); | 631 js.Expression globalHolder = glue.getInterceptorLibrary(); |
| 632 return js.js('#.#(#)', | 632 return js.js('#.#(#)', |
| 633 [globalHolder, helperName, visitExpression(node.input)]); | 633 [globalHolder, helperName, visitExpression(node.input)]); |
| 634 } | 634 } |
| 635 | 635 |
| 636 @override | 636 @override |
| 637 js.Expression visitGetField(tree_ir.GetField node) { | 637 js.Expression visitGetField(tree_ir.GetField node) { |
| 638 registry.registerFieldGetter(node.field); |
| 638 return new js.PropertyAccess( | 639 return new js.PropertyAccess( |
| 639 visitExpression(node.object), | 640 visitExpression(node.object), |
| 640 glue.instanceFieldPropertyName(node.field)); | 641 glue.instanceFieldPropertyName(node.field)); |
| 641 } | 642 } |
| 642 | 643 |
| 643 @override | 644 @override |
| 644 js.Assignment visitSetField(tree_ir.SetField node) { | 645 js.Assignment visitSetField(tree_ir.SetField node) { |
| 646 registry.registerFieldSetter(node.field); |
| 645 js.PropertyAccess field = | 647 js.PropertyAccess field = |
| 646 new js.PropertyAccess( | 648 new js.PropertyAccess( |
| 647 visitExpression(node.object), | 649 visitExpression(node.object), |
| 648 glue.instanceFieldPropertyName(node.field)); | 650 glue.instanceFieldPropertyName(node.field)); |
| 649 return new js.Assignment(field, visitExpression(node.value)); | 651 return new js.Assignment(field, visitExpression(node.value)); |
| 650 } | 652 } |
| 651 | 653 |
| 652 @override | 654 @override |
| 653 js.Expression visitGetStatic(tree_ir.GetStatic node) { | 655 js.Expression visitGetStatic(tree_ir.GetStatic node) { |
| 654 assert(node.element is FieldElement || node.element is FunctionElement); | 656 assert(node.element is FieldElement || node.element is FunctionElement); |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 781 return js.js("typeof # === 'number' && Math.floor(#) === #", args); | 783 return js.js("typeof # === 'number' && Math.floor(#) === #", args); |
| 782 } | 784 } |
| 783 } | 785 } |
| 784 | 786 |
| 785 visitFunctionExpression(tree_ir.FunctionExpression node) { | 787 visitFunctionExpression(tree_ir.FunctionExpression node) { |
| 786 // FunctionExpressions are currently unused. | 788 // FunctionExpressions are currently unused. |
| 787 // We might need them if we want to emit raw JS nested functions. | 789 // We might need them if we want to emit raw JS nested functions. |
| 788 throw 'FunctionExpressions should not be used'; | 790 throw 'FunctionExpressions should not be used'; |
| 789 } | 791 } |
| 790 } | 792 } |
| OLD | NEW |