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

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

Issue 1426633005: dart2js cps: Better side-effect tracking in loops. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 5 years, 1 month 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/loop_effects.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/cps_ir/loop_hierarchy.dart
diff --git a/pkg/compiler/lib/src/cps_ir/loop_hierarchy.dart b/pkg/compiler/lib/src/cps_ir/loop_hierarchy.dart
index fc639442a227812c311a8ddefdb2cca163151edf..3aa5bc9bf64e548bb6373543b869fece700db572 100644
--- a/pkg/compiler/lib/src/cps_ir/loop_hierarchy.dart
+++ b/pkg/compiler/lib/src/cps_ir/loop_hierarchy.dart
@@ -7,21 +7,21 @@ library dart2js.cps_ir.loop_hierarchy;
import 'cps_ir_nodes.dart';
/// Determines the effective nesting of loops.
-///
+///
/// The effective nesting of loops is different from the lexical nesting, since
-/// recursive continuations can generally contain all the code following
+/// recursive continuations can generally contain all the code following
/// after the loop in addition to the looping code itself.
-///
+///
/// For example, the 'else' branch below is not effectively part of the loop:
-///
-/// let rec kont x =
-/// if (<loop condition>)
+///
+/// let rec kont x =
+/// if (<loop condition>)
/// <loop body>
/// InvokeContinuation kont x'
-/// else
+/// else
/// <after loop>
/// return p.foo()
-///
+///
/// We use the term "loop" to mean recursive continuation.
/// The `null` value is used to represent a context not part of any loop.
class LoopHierarchy {
@@ -36,7 +36,7 @@ class LoopHierarchy {
int currentDepth = 0;
/// Computes the loop hierarchy for the given function.
- ///
+ ///
/// Parent pointers must be computed for [node].
LoopHierarchy(FunctionDefinition node) {
_processBlock(node.body, null);
@@ -47,21 +47,21 @@ class LoopHierarchy {
return cont.isRecursive ? cont : loopTarget[cont];
}
- /// Returns the innermost loop which the given loop is part of, other
+ /// Returns the innermost loop which the given continuation is part of, other
/// than itself.
- Continuation getEnclosingLoop(Continuation loop) {
- return loopTarget[loop];
+ Continuation getEnclosingLoop(Continuation cont) {
+ return loopTarget[cont];
asgerf 2015/11/05 12:13:42 The only "change" here is that we may now ask for
}
/// Marks the innermost loop as a subloop of the other loop.
- ///
+ ///
/// Returns the innermost loop.
- ///
+ ///
/// Both continuations, [c1] and [c2] may be null (i.e. no loop).
- ///
+ ///
/// A loop is said to be a subloop of an enclosing loop if it can invoke
/// that loop recursively. This information is stored in [loopTarget].
- ///
+ ///
/// This method is only invoked with two distinct loops if there is a
/// point that can reach a recursive invocation of both loops.
/// This implies that one loop is nested in the other, because they must
@@ -83,7 +83,7 @@ class LoopHierarchy {
/// Analyzes the body of [cont] and returns the innermost loop
/// that can be invoked recursively from [cont] (other than [cont] itself).
- ///
+ ///
/// [catchLoop] is the innermost loop that can be invoked recursively
/// from the current exception handler.
Continuation _processContinuation(Continuation cont, Continuation catchLoop) {
« no previous file with comments | « pkg/compiler/lib/src/cps_ir/loop_effects.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698