Chromium Code Reviews| Index: pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| diff --git a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| index e50be5637e4b2b4d1f3a4225f2f421d542e8586d..1dd2fcc2209a2a581ff10d8ac307f37a1e58d038 100644 |
| --- a/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| +++ b/pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart |
| @@ -568,8 +568,13 @@ class InvokeContinuation extends Expression { |
| // the continuation itself. |
| bool isRecursive; |
| + // True if this invocation escapes from the body of a [LetHandler]. |
| + // Notably, such an invocation cannot be inlined. |
|
floitsch
2015/07/06 18:18:35
The name and the description don't seem to match.
asgerf
2015/07/07 08:42:05
Clarified that LetHandlers are try blocks.
|
| + bool isEscapingTry; |
|
floitsch
2015/07/06 18:18:36
can this be final?
asgerf
2015/07/07 08:42:04
So far yes.
|
| + |
| InvokeContinuation(Continuation cont, List<Primitive> args, |
| - {this.isRecursive: false}) |
| + {this.isRecursive: false, |
| + this.isEscapingTry: false}) |
| : continuation = new Reference<Continuation>(cont), |
| arguments = _referenceList(args) { |
| assert(cont.parameters == null || cont.parameters.length == args.length); |
| @@ -581,7 +586,8 @@ class InvokeContinuation extends Expression { |
| /// |
| /// Used as a placeholder for a jump whose target is not yet created |
| /// (e.g., in the translation of break and continue). |
| - InvokeContinuation.uninitialized({this.isRecursive: false}) |
| + InvokeContinuation.uninitialized({this.isRecursive: false, |
| + this.isEscapingTry: false}) |
| : continuation = null, |
| arguments = null; |
| @@ -897,7 +903,9 @@ class Continuation extends Definition<Continuation> implements InteriorNode { |
| Continuation(this.parameters, {this.isRecursive: false}); |
| - Continuation.retrn() : parameters = <Parameter>[new Parameter(null)]; |
| + Continuation.retrn() |
| + : parameters = <Parameter>[new Parameter(null)], |
| + isRecursive = false; |
| accept(Visitor visitor) => visitor.visitContinuation(this); |
| } |