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

Side by Side Diff: pkg/compiler/lib/src/kernel/closure.dart

Issue 2960633002: Split KernelToElementMap into sub-interfaces (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) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 '../common/tasks.dart'; 8 import '../common/tasks.dart';
9 import '../elements/entities.dart'; 9 import '../elements/entities.dart';
10 import '../world.dart'; 10 import '../world.dart';
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 /// generation of a new (temporary) representation to store where variables need 63 /// generation of a new (temporary) representation to store where variables need
64 /// to be hoisted/captured up at another level to re-write the closure, and then 64 /// to be hoisted/captured up at another level to re-write the closure, and then
65 /// the code generation phase where we generate elements and/or instructions to 65 /// the code generation phase where we generate elements and/or instructions to
66 /// represent this new code path. 66 /// represent this new code path.
67 /// 67 ///
68 /// For a general explanation of how closure conversion works at a high level, 68 /// For a general explanation of how closure conversion works at a high level,
69 /// check out: 69 /// check out:
70 /// http://siek.blogspot.com/2012/07/essence-of-closure-conversion.html or 70 /// http://siek.blogspot.com/2012/07/essence-of-closure-conversion.html or
71 /// http://matt.might.net/articles/closure-conversion/. 71 /// http://matt.might.net/articles/closure-conversion/.
72 class KernelClosureConversionTask extends ClosureConversionTask<ir.Node> { 72 class KernelClosureConversionTask extends ClosureConversionTask<ir.Node> {
73 final KernelToElementMap _elementMap; 73 final KernelToElementMapForBuilding _elementMap;
74 final GlobalLocalsMap _globalLocalsMap; 74 final GlobalLocalsMap _globalLocalsMap;
75 Map<Entity, ClosureRepresentationInfo> _infoMap = 75 Map<Entity, ClosureRepresentationInfo> _infoMap =
76 <Entity, ClosureRepresentationInfo>{}; 76 <Entity, ClosureRepresentationInfo>{};
77 77
78 KernelClosureConversionTask( 78 KernelClosureConversionTask(
79 Measurer measurer, this._elementMap, this._globalLocalsMap) 79 Measurer measurer, this._elementMap, this._globalLocalsMap)
80 : super(measurer); 80 : super(measurer);
81 81
82 /// The combined steps of generating our intermediate representation of 82 /// The combined steps of generating our intermediate representation of
83 /// closures that need to be rewritten and generating the element model. 83 /// closures that need to be rewritten and generating the element model.
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 bool variableIsUsedInTryOrSync(Local variable) => 146 bool variableIsUsedInTryOrSync(Local variable) =>
147 _localsUsedInTryOrSync.contains(variable); 147 _localsUsedInTryOrSync.contains(variable);
148 148
149 String toString() { 149 String toString() {
150 StringBuffer sb = new StringBuffer(); 150 StringBuffer sb = new StringBuffer();
151 sb.write('this=$thisLocal,'); 151 sb.write('this=$thisLocal,');
152 sb.write('localsUsedInTryOrSync={${_localsUsedInTryOrSync.join(', ')}}'); 152 sb.write('localsUsedInTryOrSync={${_localsUsedInTryOrSync.join(', ')}}');
153 return sb.toString(); 153 return sb.toString();
154 } 154 }
155 } 155 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698