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

Side by Side Diff: pkg/compiler/lib/src/js_model/closure_visitors.dart

Issue 2983933002: Revert "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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 import 'package:kernel/ast.dart' as ir; 5 import 'package:kernel/ast.dart' as ir;
6 6
7 import '../closure.dart'; 7 import '../closure.dart';
8 import '../elements/entities.dart'; 8 import '../elements/entities.dart';
9 import '../kernel/element_map.dart'; 9 import '../kernel/element_map.dart';
10 import 'closure.dart'; 10 import 'closure.dart';
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 if (node is ir.Procedure) { 96 if (node is ir.Procedure) {
97 thisLocal = new ThisLocal(_kernelToElementMap.getMethod(node)); 97 thisLocal = new ThisLocal(_kernelToElementMap.getMethod(node));
98 } else if (node is ir.Field) { 98 } else if (node is ir.Field) {
99 thisLocal = new ThisLocal(_kernelToElementMap.getField(node)); 99 thisLocal = new ThisLocal(_kernelToElementMap.getField(node));
100 } 100 }
101 } else if (node is ir.Constructor) { 101 } else if (node is ir.Constructor) {
102 thisLocal = new ThisLocal(_kernelToElementMap.getConstructor(node)); 102 thisLocal = new ThisLocal(_kernelToElementMap.getConstructor(node));
103 } 103 }
104 104
105 assert(_scopeInfoMap[_nodeToEntity(node)] != null); 105 assert(_scopeInfoMap[_nodeToEntity(node)] != null);
106 KernelScopeInfo from = _scopeInfoMap[_nodeToEntity(node)];
107 _scopesCapturedInClosureMap[node] = new KernelCapturedScope( 106 _scopesCapturedInClosureMap[node] = new KernelCapturedScope(
108 capturedVariablesForScope, 107 capturedVariablesForScope,
109 _nodeToEntity(_executableContext), 108 _nodeToEntity(_executableContext),
110 from.localsUsedInTryOrSync,
111 from.freeVariables,
112 from.localsMap,
113 thisLocal); 109 thisLocal);
114 } 110 }
115 } 111 }
116 112
117 Entity _nodeToEntity(ir.Node node) { 113 Entity _nodeToEntity(ir.Node node) {
118 if (node is ir.Member) { 114 if (node is ir.Member) {
119 return _kernelToElementMap.getMember(node); 115 return _kernelToElementMap.getMember(node);
120 } else { 116 } else {
121 return _kernelToElementMap.getLocalFunction(node); 117 return _kernelToElementMap.getLocalFunction(node);
122 } 118 }
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
218 boxedLoopVariables.add(_localsMap.getLocal(variable)); 214 boxedLoopVariables.add(_localsMap.getLocal(variable));
219 } 215 }
220 } 216 }
221 }); 217 });
222 KernelCapturedScope scope = _scopesCapturedInClosureMap[node]; 218 KernelCapturedScope scope = _scopesCapturedInClosureMap[node];
223 if (scope == null) return; 219 if (scope == null) return;
224 _scopesCapturedInClosureMap[node] = new KernelCapturedLoopScope( 220 _scopesCapturedInClosureMap[node] = new KernelCapturedLoopScope(
225 scope.boxedVariables, 221 scope.boxedVariables,
226 boxedLoopVariables, 222 boxedLoopVariables,
227 scope.context, 223 scope.context,
228 scope.localsUsedInTryOrSync,
229 scope.freeVariables,
230 _localsMap,
231 scope.thisLocal); 224 scope.thisLocal);
232 } 225 }
233 226
234 void visitInvokable(ir.TreeNode node) { 227 void visitInvokable(ir.TreeNode node) {
235 bool oldIsInsideClosure = _isInsideClosure; 228 bool oldIsInsideClosure = _isInsideClosure;
236 ir.Node oldExecutableContext = _executableContext; 229 ir.Node oldExecutableContext = _executableContext;
237 KernelScopeInfo oldScopeInfo = _currentScopeInfo; 230 KernelScopeInfo oldScopeInfo = _currentScopeInfo;
238 231
239 // _outermostNode is only null the first time we enter the body of the 232 // _outermostNode is only null the first time we enter the body of the
240 // field, constructor, or method that is being analyzed. 233 // field, constructor, or method that is being analyzed.
241 _isInsideClosure = _outermostNode != null; 234 _isInsideClosure = _outermostNode != null;
242 _executableContext = node; 235 _executableContext = node;
243 _currentScopeInfo = new KernelScopeInfo(_nodeToThisLocal(node), _localsMap); 236 _currentScopeInfo = new KernelScopeInfo(_nodeToThisLocal(node));
244 if (_isInsideClosure) { 237 if (_isInsideClosure) {
245 _closuresToGenerate[node] = _currentScopeInfo; 238 _closuresToGenerate[node] = _currentScopeInfo;
246 } else { 239 } else {
247 _outermostNode = node; 240 _outermostNode = node;
248 _scopeInfoMap[_originalEntity] = _currentScopeInfo; 241 _scopeInfoMap[_originalEntity] = _currentScopeInfo;
249 } 242 }
250 243
251 enterNewScope(node, () { 244 enterNewScope(node, () {
252 node.visitChildren(this); 245 node.visitChildren(this);
253 }); 246 });
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
315 nodeToConvert.isInstanceMember)) { 308 nodeToConvert.isInstanceMember)) {
316 return new ThisLocal(_kernelToElementMap.getConstructor(nodeToConvert)); 309 return new ThisLocal(_kernelToElementMap.getConstructor(nodeToConvert));
317 } else if (nodeToConvert is ir.Procedure && 310 } else if (nodeToConvert is ir.Procedure &&
318 nodeToConvert.isInstanceMember) { 311 nodeToConvert.isInstanceMember) {
319 return new ThisLocal(_kernelToElementMap.getMethod(nodeToConvert)); 312 return new ThisLocal(_kernelToElementMap.getMethod(nodeToConvert));
320 } 313 }
321 } 314 }
322 return null; 315 return null;
323 } 316 }
324 } 317 }
OLDNEW
« 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