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

Unified Diff: pkg/compiler/lib/src/closure.dart

Issue 2975323002: Renamed some scoping classes to make their usage clearer. (Closed)
Patch Set: . Created 3 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 | « no previous file | pkg/compiler/lib/src/js_model/closure.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/closure.dart
diff --git a/pkg/compiler/lib/src/closure.dart b/pkg/compiler/lib/src/closure.dart
index f9e5b33adf91eb26c4c84bafab4cfbb9fb0f9171..637237cab18224ce7e258ac0df3acaea29e41b7b 100644
--- a/pkg/compiler/lib/src/closure.dart
+++ b/pkg/compiler/lib/src/closure.dart
@@ -53,10 +53,11 @@ abstract class ClosureDataLookup<T> {
/// Look up information about a loop, in case any variables it declares need
/// to be boxed/snapshotted.
- LoopClosureScope getLoopClosureScope(T loopNode);
+ CapturedLoopScope getCapturedLoopScope(T loopNode);
- /// Accessor to the information about closures that the SSA builder will use.
- ClosureScope getClosureScope(MemberEntity entity);
+ /// Accessor to the information about scopes that closures capture. Used by
+ /// the SSA builder.
+ CapturedScope getCapturedScope(MemberEntity entity);
}
/// Class that represents one level of scoping information, whether this scope
@@ -105,8 +106,8 @@ class ScopeInfo {
/// Class representing the usage of a scope that has been captured in the
/// context of a closure.
-class ClosureScope extends ScopeInfo {
- const ClosureScope();
+class CapturedScope extends ScopeInfo {
+ const CapturedScope();
/// If true, this closure accesses a variable that was defined in an outside
/// scope and this variable gets modified at some point (sometimes we say that
@@ -137,8 +138,8 @@ class ClosureScope extends ScopeInfo {
/// the result would be [5, 5, 5, 5, 5]. Because of this difference we need to
/// create a closure for these sorts of loops to capture the variable's value at
/// each iteration, by boxing the iteration variable[s].
-class LoopClosureScope extends ClosureScope {
- const LoopClosureScope();
+class CapturedLoopScope extends CapturedScope {
+ const CapturedLoopScope();
/// True if this loop scope declares in the first part of the loop
/// `for (<here>;...;...)` any variables that need to be boxed.
@@ -251,7 +252,7 @@ class ClosureRepresentationInfo extends ScopeInfo {
}
class ClosureTask extends ClosureConversionTask<Node> {
- Map<Node, ClosureScopeImpl> _closureInfoMap = <Node, ClosureScopeImpl>{};
+ Map<Node, CapturedScopeImpl> _closureInfoMap = <Node, CapturedScopeImpl>{};
Map<Element, ClosureClassMap> _closureMappingCache =
<Element, ClosureClassMap>{};
Compiler compiler;
@@ -268,15 +269,16 @@ class ClosureTask extends ClosureConversionTask<Node> {
createClosureClasses(closedWorldRefiner);
}
- ClosureScope _getClosureScope(Node node) {
+ CapturedScope _getCapturedScope(Node node) {
var value = _closureInfoMap[node];
- return value == null ? const ClosureScope() : value;
+ return value == null ? const CapturedScope() : value;
}
- ClosureScope getClosureScope(covariant MemberElement member) {
+ CapturedScope getCapturedScope(covariant MemberElement member) {
ResolvedAst resolvedAst = member.resolvedAst;
- if (resolvedAst.kind != ResolvedAstKind.PARSED) return const ClosureScope();
- return _getClosureScope(resolvedAst.node);
+ if (resolvedAst.kind != ResolvedAstKind.PARSED)
+ return const CapturedScope();
+ return _getCapturedScope(resolvedAst.node);
}
ScopeInfo getScopeInfo(Element member) {
@@ -287,9 +289,9 @@ class ClosureTask extends ClosureConversionTask<Node> {
return getClosureToClassMapping(member);
}
- LoopClosureScope getLoopClosureScope(Node loopNode) {
+ CapturedLoopScope getCapturedLoopScope(Node loopNode) {
var value = _closureInfoMap[loopNode];
- return value == null ? const LoopClosureScope() : value;
+ return value == null ? const CapturedLoopScope() : value;
}
/// Returns the [ClosureClassMap] computed for [resolvedAst].
@@ -655,7 +657,7 @@ class SynthesizedCallMethodElementX extends BaseFunctionElementX
// The box-element for a scope, and the captured variables that need to be
// stored in the box.
-class ClosureScopeImpl implements ClosureScope, LoopClosureScope {
+class CapturedScopeImpl implements CapturedScope, CapturedLoopScope {
final BoxLocal boxElement;
final Map<Local, BoxFieldElement> capturedVariables;
@@ -664,7 +666,7 @@ class ClosureScopeImpl implements ClosureScope, LoopClosureScope {
// Otherwise contains the empty List.
List<Local> boxedLoopVariables = const <Local>[];
- ClosureScopeImpl(this.boxElement, this.capturedVariables);
+ CapturedScopeImpl(this.boxElement, this.capturedVariables);
Local get context => boxElement;
@@ -687,16 +689,16 @@ class ClosureScopeImpl implements ClosureScope, LoopClosureScope {
// Should not be called. Added to make the new interface happy.
bool localIsUsedInTryOrSync(Local variable) =>
- throw new UnsupportedError("ClosureScopeImpl.localIsUsedInTryOrSync");
+ throw new UnsupportedError("CapturedScopeImpl.localIsUsedInTryOrSync");
// Should not be called. Added to make the new interface happy.
Local get thisLocal =>
- throw new UnsupportedError("ClosureScopeImpl.thisLocal");
+ throw new UnsupportedError("CapturedScopeImpl.thisLocal");
String toString() {
String separator = '';
StringBuffer sb = new StringBuffer();
- sb.write('ClosureScopeImpl(');
+ sb.write('CapturedScopeImpl(');
if (boxElement != null) {
sb.write('box=$boxElement');
separator = ',';
@@ -740,12 +742,12 @@ class ClosureClassMap implements ClosureRepresentationInfo {
/// their locations.
final Map<Local, FieldEntity> freeVariableMap = new Map<Local, FieldEntity>();
- /// Maps [Loop] and [FunctionExpression] nodes to their [ClosureScopeImpl] which
+ /// Maps [Loop] and [FunctionExpression] nodes to their [CapturedScopeImpl] which
/// contains their box and the captured variables that are stored in the box.
/// This map will be empty if the method/closure of this [ClosureData] does
/// not contain any nested closure.
- final Map<Node, ClosureScopeImpl> capturingScopes =
- new Map<Node, ClosureScopeImpl>();
+ final Map<Node, CapturedScopeImpl> capturingScopes =
+ new Map<Node, CapturedScopeImpl>();
/// Set of [variable]s referenced in this scope that are used inside a
/// `try` block or a `sync*` generator (this is important to know because
@@ -816,7 +818,7 @@ class ClosureClassMap implements ClosureRepresentationInfo {
if (variable is BoxLocal) return;
f(variable, copy);
});
- capturingScopes.values.forEach((ClosureScopeImpl scope) {
+ capturingScopes.values.forEach((CapturedScopeImpl scope) {
scope.forEachCapturedVariable(f);
});
}
@@ -827,7 +829,7 @@ class ClosureClassMap implements ClosureRepresentationInfo {
if (!isVariableBoxed(variable)) return;
f(variable, copy);
});
- capturingScopes.values.forEach((ClosureScopeImpl scope) {
+ capturingScopes.values.forEach((CapturedScopeImpl scope) {
scope.forEachCapturedVariable(f);
});
}
@@ -850,7 +852,7 @@ class ClosureTranslator extends Visitor {
bool inTryStatement = false;
final Map<Element, ClosureClassMap> closureMappingCache;
- final Map<Node, ClosureScopeImpl> closureInfo;
+ final Map<Node, CapturedScopeImpl> closureInfo;
// Map of captured variables. Initially they will map to `null`. If
// a variable needs to be boxed then the scope declaring the variable
@@ -1261,7 +1263,7 @@ class ClosureTranslator extends Visitor {
boxCapturedVariable(variable);
}
if (!scopeMapping.isEmpty) {
- ClosureScopeImpl scope = new ClosureScopeImpl(box, scopeMapping);
+ CapturedScopeImpl scope = new CapturedScopeImpl(box, scopeMapping);
closureData.capturingScopes[node] = scope;
assert(closureInfo[node] == null);
closureInfo[node] = scope;
@@ -1326,7 +1328,7 @@ class ClosureTranslator extends Visitor {
}
}
});
- ClosureScopeImpl scopeData = closureData.capturingScopes[node];
+ CapturedScopeImpl scopeData = closureData.capturingScopes[node];
if (scopeData == null) return;
scopeData.boxedLoopVariables = boxedLoopVariables;
}
« no previous file with comments | « no previous file | pkg/compiler/lib/src/js_model/closure.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698