OLD | NEW |
1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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 cps_ir.cps_fragment; | 5 library cps_ir.cps_fragment; |
6 | 6 |
7 import 'cps_ir_nodes.dart'; | 7 import 'cps_ir_nodes.dart'; |
8 import '../constants/values.dart'; | 8 import '../constants/values.dart'; |
9 import '../universe/selector.dart' show Selector; | 9 import '../universe/selector.dart' show Selector; |
10 import '../types/types.dart' show TypeMask; | 10 import '../types/types.dart' show TypeMask; |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 List<Primitive> arguments, | 123 List<Primitive> arguments, |
124 {bool receiverIsNotNull: false}) { | 124 {bool receiverIsNotNull: false}) { |
125 ApplyBuiltinMethod apply = | 125 ApplyBuiltinMethod apply = |
126 new ApplyBuiltinMethod(method, receiver, arguments, sourceInformation); | 126 new ApplyBuiltinMethod(method, receiver, arguments, sourceInformation); |
127 apply.receiverIsNotNull = receiverIsNotNull; | 127 apply.receiverIsNotNull = receiverIsNotNull; |
128 return letPrim(apply); | 128 return letPrim(apply); |
129 } | 129 } |
130 | 130 |
131 /// Inserts an invocation and returns a primitive holding the returned value. | 131 /// Inserts an invocation and returns a primitive holding the returned value. |
132 Primitive invokeMethod(Primitive receiver, | 132 Primitive invokeMethod(Primitive receiver, |
133 Selector selector, | 133 Selector selector, |
134 TypeMask mask, | 134 TypeMask mask, |
135 List<Primitive> arguments, | 135 List<Primitive> arguments) { |
136 [CallingConvention callingConvention = CallingConvention.Normal]) { | 136 return letPrim(new InvokeMethod(receiver, selector, mask, arguments, |
137 InvokeMethod invoke = | 137 sourceInformation)); |
138 new InvokeMethod(receiver, selector, mask, arguments, sourceInformation) | |
139 ..callingConvention = callingConvention; | |
140 return letPrim(invoke); | |
141 } | 138 } |
142 | 139 |
143 /// Inserts an invocation and returns a primitive holding the returned value. | 140 /// Inserts an invocation and returns a primitive holding the returned value. |
144 Primitive invokeStatic(FunctionElement target, List<Primitive> arguments) { | 141 Primitive invokeStatic(FunctionElement target, List<Primitive> arguments) { |
145 return letPrim(new InvokeStatic(target, new Selector.fromElement(target), | 142 return letPrim(new InvokeStatic(target, new Selector.fromElement(target), |
146 arguments, sourceInformation)); | 143 arguments, sourceInformation)); |
147 } | 144 } |
148 | 145 |
149 /// Inserts an invocation to a static function that throws an error. | 146 /// Inserts an invocation to a static function that throws an error. |
150 /// | 147 /// |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 while (prim.firstRef != null) { | 353 while (prim.firstRef != null) { |
357 Refinement refine = prim.firstRef.parent; | 354 Refinement refine = prim.firstRef.parent; |
358 destroyRefinementsOfDeadPrimitive(refine); | 355 destroyRefinementsOfDeadPrimitive(refine); |
359 LetPrim letPrim = refine.parent; | 356 LetPrim letPrim = refine.parent; |
360 InteriorNode parent = letPrim.parent; | 357 InteriorNode parent = letPrim.parent; |
361 parent.body = letPrim.body; | 358 parent.body = letPrim.body; |
362 letPrim.body.parent = parent; | 359 letPrim.body.parent = parent; |
363 prim.firstRef.unlink(); | 360 prim.firstRef.unlink(); |
364 } | 361 } |
365 } | 362 } |
OLD | NEW |