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

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

Issue 2916353002: Support locals in compile_from_dill_test. (Closed)
Patch Set: Created 3 years, 6 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 library dart2js.kernel.backend_strategy; 5 library dart2js.kernel.backend_strategy;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 8
9 import '../backend_strategy.dart'; 9 import '../backend_strategy.dart';
10 import '../closure.dart'; 10 import '../closure.dart';
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 129
130 @override 130 @override
131 HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) { 131 HGraph build(CodegenWorkItem work, ClosedWorld closedWorld) {
132 KernelSsaBuilder builder = new KernelSsaBuilder( 132 KernelSsaBuilder builder = new KernelSsaBuilder(
133 work.element, 133 work.element,
134 work.element.enclosingClass, 134 work.element.enclosingClass,
135 _elementMap.getMemberNode(work.element), 135 _elementMap.getMemberNode(work.element),
136 _compiler, 136 _compiler,
137 _elementMap, 137 _elementMap,
138 new KernelToTypeInferenceMapImpl(closedWorld), 138 new KernelToTypeInferenceMapImpl(closedWorld),
139 null, 139 new KernelToLocalsMapImpl(work.element),
140 closedWorld, 140 closedWorld,
141 work.registry, 141 work.registry,
142 // TODO(johnniwinther): Support these: 142 // TODO(johnniwinther): Support these:
143 const KernelClosureClassMaps(), 143 const KernelClosureClassMaps(),
144 const SourceInformationBuilder(), 144 const SourceInformationBuilder(),
145 null, // Function node used as capture scope id. 145 null, // Function node used as capture scope id.
146 targetIsConstructorBody: false); 146 targetIsConstructorBody: false);
147 return builder.build(); 147 return builder.build();
148 } 148 }
149 } 149 }
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 return _closedWorld.commonMasks.dynamicType; 222 return _closedWorld.commonMasks.dynamicType;
223 } 223 }
224 224
225 @override 225 @override
226 TypeMask getReturnTypeOf(FunctionEntity function) { 226 TypeMask getReturnTypeOf(FunctionEntity function) {
227 return _closedWorld.commonMasks.dynamicType; 227 return _closedWorld.commonMasks.dynamicType;
228 } 228 }
229 } 229 }
230 230
231 class KernelToLocalsMapImpl implements KernelToLocalsMap { 231 class KernelToLocalsMapImpl implements KernelToLocalsMap {
232 @override 232 final List<MemberEntity> _members = <MemberEntity>[];
233 void enterInlinedMember(MemberEntity member) {} 233 Map<ir.VariableDeclaration, KLocal> _map = <ir.VariableDeclaration, KLocal>{};
234
235 MemberEntity get currentMember => _members.last;
236
237 KernelToLocalsMapImpl(MemberEntity member) {
238 _members.add(member);
239 }
234 240
235 @override 241 @override
236 void leaveInlinedMember(MemberEntity member) {} 242 void enterInlinedMember(MemberEntity member) {
243 _members.add(member);
244 }
245
246 @override
247 void leaveInlinedMember(MemberEntity member) {
248 assert(member == currentMember);
249 _members.removeLast();
250 }
237 251
238 @override 252 @override
239 JumpTarget getJumpTarget(ir.TreeNode node, {bool isContinueTarget: false}) { 253 JumpTarget getJumpTarget(ir.TreeNode node, {bool isContinueTarget: false}) {
240 throw new UnimplementedError('KernelToLocalsMapImpl.getJumpTarget'); 254 throw new UnimplementedError('KernelToLocalsMapImpl.getJumpTarget');
241 } 255 }
242 256
243 @override 257 @override
244 Local getLocal(ir.VariableDeclaration node) { 258 Local getLocal(ir.VariableDeclaration node) {
245 throw new UnimplementedError('KernelToLocalsMapImpl.getLocal'); 259 return _map.putIfAbsent(node, () {
260 return new KLocal(node.name, currentMember);
261 });
246 } 262 }
247 } 263 }
248 264
265 class KLocal implements Local {
266 final String name;
267 final MemberEntity memberContext;
268
269 KLocal(this.name, this.memberContext);
270
271 @override
272 Entity get executableContext => memberContext;
273 }
274
249 /// TODO(johnniwinther,efortuna): Implement this. 275 /// TODO(johnniwinther,efortuna): Implement this.
250 class KernelClosureClassMaps implements ClosureClassMaps { 276 class KernelClosureClassMaps implements ClosureClassMaps {
251 const KernelClosureClassMaps(); 277 const KernelClosureClassMaps();
252 278
253 @override 279 @override
254 ClosureClassMap getLocalFunctionMap(Local localFunction) { 280 ClosureClassMap getLocalFunctionMap(Local localFunction) {
255 return new ClosureClassMap(null, null, null, null); 281 return new ClosureClassMap(null, null, null, null);
256 } 282 }
257 283
258 @override 284 @override
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) { 327 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
302 return classes.toList() 328 return classes.toList()
303 ..sort((ClassEntity a, ClassEntity b) { 329 ..sort((ClassEntity a, ClassEntity b) {
304 int r = _compareLibraries(a.library, b.library); 330 int r = _compareLibraries(a.library, b.library);
305 if (r != 0) return r; 331 if (r != 0) return r;
306 return _compareNodes( 332 return _compareNodes(
307 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b)); 333 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b));
308 }); 334 });
309 } 335 }
310 } 336 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/kernel/element_map.dart ('k') | pkg/compiler/lib/src/ssa/builder_kernel.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698