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

Unified Diff: pkg/compiler/lib/src/js_model/closure_visitors.dart

Issue 2978263003: Add nonboxed closure class fields. (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 | « pkg/compiler/lib/src/js_model/closure.dart ('k') | pkg/compiler/lib/src/kernel/element_map_impl.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/js_model/closure_visitors.dart
diff --git a/pkg/compiler/lib/src/js_model/closure_visitors.dart b/pkg/compiler/lib/src/js_model/closure_visitors.dart
index 89fb18c1451a9493e626b1f2708b68a6c579620b..a089defc3827a327e0927a4b884b3a6f1f22cc4b 100644
--- a/pkg/compiler/lib/src/js_model/closure_visitors.dart
+++ b/pkg/compiler/lib/src/js_model/closure_visitors.dart
@@ -103,9 +103,13 @@ class CapturedScopeBuilder extends ir.Visitor {
}
assert(_scopeInfoMap[_nodeToEntity(node)] != null);
+ KernelScopeInfo from = _scopeInfoMap[_nodeToEntity(node)];
_scopesCapturedInClosureMap[node] = new KernelCapturedScope(
capturedVariablesForScope,
_nodeToEntity(_executableContext),
+ from.localsUsedInTryOrSync,
+ from.freeVariables,
+ from.localsMap,
thisLocal);
}
}
@@ -221,6 +225,9 @@ class CapturedScopeBuilder extends ir.Visitor {
scope.boxedVariables,
boxedLoopVariables,
scope.context,
+ scope.localsUsedInTryOrSync,
+ scope.freeVariables,
+ _localsMap,
scope.thisLocal);
}
@@ -233,7 +240,7 @@ class CapturedScopeBuilder extends ir.Visitor {
// field, constructor, or method that is being analyzed.
_isInsideClosure = _outermostNode != null;
_executableContext = node;
- _currentScopeInfo = new KernelScopeInfo(_nodeToThisLocal(node));
+ _currentScopeInfo = new KernelScopeInfo(_nodeToThisLocal(node), _localsMap);
if (_isInsideClosure) {
_closuresToGenerate[node] = _currentScopeInfo;
} else {
« no previous file with comments | « pkg/compiler/lib/src/js_model/closure.dart ('k') | pkg/compiler/lib/src/kernel/element_map_impl.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698