Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(401)

Side by Side Diff: pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart

Issue 1109403002: cps-ir: Support compilation of methods that use interceptor calling convention. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Address comment. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 // IrNodes are kept in a separate library to have precise control over their 5 // IrNodes are kept in a separate library to have precise control over their
6 // dependencies on other parts of the system. 6 // dependencies on other parts of the system.
7 library dart2js.ir_nodes; 7 library dart2js.ir_nodes;
8 8
9 import '../constants/expressions.dart'; 9 import '../constants/expressions.dart';
10 import '../constants/values.dart' as values show ConstantValue; 10 import '../constants/values.dart' as values show ConstantValue;
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 /// and [target]'s implementation is invoked. 322 /// and [target]'s implementation is invoked.
323 /// 323 ///
324 /// As with [InvokeMethod], this can be used to invoke a method, operator, 324 /// As with [InvokeMethod], this can be used to invoke a method, operator,
325 /// getter, setter, or index getter/setter. 325 /// getter, setter, or index getter/setter.
326 /// 326 ///
327 /// If it is known that [target] does not use its receiver argument, then 327 /// If it is known that [target] does not use its receiver argument, then
328 /// [receiver] may refer to a null constant primitive. This happens for direct 328 /// [receiver] may refer to a null constant primitive. This happens for direct
329 /// invocations to intercepted methods, where the effective receiver is instead 329 /// invocations to intercepted methods, where the effective receiver is instead
330 /// passed as a formal parameter. 330 /// passed as a formal parameter.
331 /// 331 ///
332 /// TODO(sra): Review. A direct call to a method that is mixed into a native
333 /// class will still require an explicit argument.
334 ///
332 /// When targeting Dart, this instruction is used to represent super calls. 335 /// When targeting Dart, this instruction is used to represent super calls.
333 /// Here, [receiver] must always be a reference to `this`, and [target] must be 336 /// Here, [receiver] must always be a reference to `this`, and [target] must be
334 /// a method that is available in the super class. 337 /// a method that is available in the super class.
335 class InvokeMethodDirectly extends Expression implements Invoke { 338 class InvokeMethodDirectly extends Expression implements Invoke {
336 Reference<Primitive> receiver; 339 Reference<Primitive> receiver;
337 final Element target; 340 final Element target;
338 final Selector selector; 341 final Selector selector;
339 final List<Reference<Primitive>> arguments; 342 final List<Reference<Primitive>> arguments;
340 final Reference<Continuation> continuation; 343 final Reference<Continuation> continuation;
341 344
(...skipping 978 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 processTypeExpression(node); 1323 processTypeExpression(node);
1321 node.arguments.forEach(processReference); 1324 node.arguments.forEach(processReference);
1322 } 1325 }
1323 1326
1324 processNonTailThrow(NonTailThrow node) {} 1327 processNonTailThrow(NonTailThrow node) {}
1325 visitNonTailThrow(NonTailThrow node) { 1328 visitNonTailThrow(NonTailThrow node) {
1326 processNonTailThrow(node); 1329 processNonTailThrow(node);
1327 processReference(node.value); 1330 processReference(node.value);
1328 } 1331 }
1329 } 1332 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder_task.dart ('k') | pkg/compiler/lib/src/js_backend/codegen/codegen.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698