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

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: Rebase 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
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/type_propagation.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..29d324ed567003ab1cc0878801eec9b1dce18f50 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]
+ /// (i.e. a try block). Notably, such an invocation cannot be inlined.
+ bool isEscapingTry;
+
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);
}
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/cps_ir_builder.dart ('k') | pkg/compiler/lib/src/cps_ir/type_propagation.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698