OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 dart2js.ir_builder; | 5 library dart2js.ir_builder; |
6 | 6 |
7 import '../constants/constant_system.dart'; | 7 import '../constants/constant_system.dart'; |
8 import '../constants/expressions.dart'; | 8 import '../constants/expressions.dart'; |
9 import '../constants/values.dart' show PrimitiveConstantValue; | 9 import '../constants/values.dart' show PrimitiveConstantValue; |
10 import '../dart_types.dart'; | 10 import '../dart_types.dart'; |
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1078 {SourceInformation sourceInformation}) { | 1078 {SourceInformation sourceInformation}) { |
1079 Selector selector = | 1079 Selector selector = |
1080 new Selector(SelectorKind.CALL, function.memberName, callStructure); | 1080 new Selector(SelectorKind.CALL, function.memberName, callStructure); |
1081 return _buildInvokeStatic( | 1081 return _buildInvokeStatic( |
1082 function, selector, arguments, sourceInformation); | 1082 function, selector, arguments, sourceInformation); |
1083 } | 1083 } |
1084 | 1084 |
1085 /// Create a read access of the static [field]. | 1085 /// Create a read access of the static [field]. |
1086 ir.Primitive buildStaticFieldGet(FieldElement field, | 1086 ir.Primitive buildStaticFieldGet(FieldElement field, |
1087 {SourceInformation sourceInformation}) { | 1087 {SourceInformation sourceInformation}) { |
1088 Selector selector = new Selector.getter(field.name, field.library); | 1088 return addPrimitive(new ir.GetStatic(field, sourceInformation)); |
1089 // TODO(karlklose,sigurdm): build different nodes for getters. | |
1090 return _buildInvokeStatic( | |
1091 field, selector, const <ir.Primitive>[], sourceInformation); | |
1092 } | 1089 } |
1093 | 1090 |
1094 /// Create a getter invocation of the static [getter]. | 1091 /// Create a getter invocation of the static [getter]. |
1095 ir.Primitive buildStaticGetterGet(MethodElement getter, | 1092 ir.Primitive buildStaticGetterGet(MethodElement getter, |
1096 {SourceInformation sourceInformation}) { | 1093 {SourceInformation sourceInformation}) { |
1097 Selector selector = new Selector.getter(getter.name, getter.library); | 1094 Selector selector = new Selector.getter(getter.name, getter.library); |
1098 // TODO(karlklose,sigurdm): build different nodes for getters. | |
1099 return _buildInvokeStatic( | 1095 return _buildInvokeStatic( |
1100 getter, selector, const <ir.Primitive>[], sourceInformation); | 1096 getter, selector, const <ir.Primitive>[], sourceInformation); |
1101 } | 1097 } |
1102 | 1098 |
1103 /// Create a read access of the static [function], i.e. a closurization of | 1099 /// Create a read access of the static [function], i.e. a closurization of |
1104 /// [function]. | 1100 /// [function]. |
1105 ir.Primitive buildStaticFunctionGet(MethodElement function, | 1101 ir.Primitive buildStaticFunctionGet(MethodElement function, |
1106 {SourceInformation sourceInformation}) { | 1102 {SourceInformation sourceInformation}) { |
1107 Selector selector = | 1103 return addPrimitive(new ir.GetStatic(function, sourceInformation)); |
1108 new Selector.getter(function.name, function.library); | |
1109 // TODO(karlklose,sigurdm): build different nodes for getters. | |
1110 return _buildInvokeStatic( | |
1111 function, selector, const <ir.Primitive>[], sourceInformation); | |
1112 } | 1104 } |
1113 | 1105 |
1114 /// Create a write access to the static [field] with the [value]. | 1106 /// Create a write access to the static [field] with the [value]. |
1115 ir.Primitive buildStaticFieldSet(FieldElement field, | 1107 ir.Primitive buildStaticFieldSet(FieldElement field, |
1116 ir.Primitive value, | 1108 ir.Primitive value, |
1117 {SourceInformation sourceInformation}) { | 1109 {SourceInformation sourceInformation}) { |
1118 Selector selector = new Selector.setter(field.name, field.library); | 1110 add(new ir.SetStatic(field, value, sourceInformation)); |
1119 // TODO(karlklose,sigurdm): build different nodes for setters. | |
1120 _buildInvokeStatic( | |
1121 field, selector, <ir.Primitive>[value], sourceInformation); | |
1122 return value; | 1111 return value; |
1123 } | 1112 } |
1124 | 1113 |
1125 /// Create a setter invocation of the static [setter] with the [value]. | 1114 /// Create a setter invocation of the static [setter] with the [value]. |
1126 ir.Primitive buildStaticSetterSet(MethodElement setter, | 1115 ir.Primitive buildStaticSetterSet(MethodElement setter, |
1127 ir.Primitive value, | 1116 ir.Primitive value, |
1128 {SourceInformation sourceInformation}) { | 1117 {SourceInformation sourceInformation}) { |
1129 Selector selector = new Selector.setter(setter.name, setter.library); | 1118 Selector selector = new Selector.setter(setter.name, setter.library); |
1130 // TODO(karlklose,sigurdm): build different nodes for setters. | |
1131 _buildInvokeStatic( | 1119 _buildInvokeStatic( |
1132 setter, selector, <ir.Primitive>[value], sourceInformation); | 1120 setter, selector, <ir.Primitive>[value], sourceInformation); |
1133 return value; | 1121 return value; |
1134 } | 1122 } |
1135 | 1123 |
1136 /// Create an erroneous invocation where argument structure is defined by | 1124 /// Create an erroneous invocation where argument structure is defined by |
1137 /// [selector] and the argument values are defined by [arguments]. | 1125 /// [selector] and the argument values are defined by [arguments]. |
1138 // TODO(johnniwinther): Make this more fine-grained. | 1126 // TODO(johnniwinther): Make this more fine-grained. |
1139 ir.Primitive buildErroneousInvocation( | 1127 ir.Primitive buildErroneousInvocation( |
1140 Element element, | 1128 Element element, |
(...skipping 1592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2733 } | 2721 } |
2734 | 2722 |
2735 /// Synthetic parameter to a JavaScript factory method that takes the type | 2723 /// Synthetic parameter to a JavaScript factory method that takes the type |
2736 /// argument given for the type variable [variable]. | 2724 /// argument given for the type variable [variable]. |
2737 class TypeInformationParameter implements Local { | 2725 class TypeInformationParameter implements Local { |
2738 final TypeVariableElement variable; | 2726 final TypeVariableElement variable; |
2739 final ExecutableElement executableContext; | 2727 final ExecutableElement executableContext; |
2740 TypeInformationParameter(this.variable, this.executableContext); | 2728 TypeInformationParameter(this.variable, this.executableContext); |
2741 String get name => variable.name; | 2729 String get name => variable.name; |
2742 } | 2730 } |
OLD | NEW |