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

Unified Diff: pkg/compiler/lib/src/cps_ir/cps_ir_nodes.dart

Issue 1220123004: dart2js cps: Ensure definitions are specialized before their uses. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
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);
}

Powered by Google App Engine
This is Rietveld 408576698