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

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

Issue 2933363003: Add ClosureRepresentationInfo, the new public face of ClosureClassMap (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 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
307 sb.write(')'); 307 sb.write(')');
308 return sb.toString(); 308 return sb.toString();
309 } 309 }
310 } 310 }
311 311
312 /// TODO(johnniwinther,efortuna): Implement this. 312 /// TODO(johnniwinther,efortuna): Implement this.
313 class KernelClosureClassMaps implements ClosureClassMaps<ir.Node> { 313 class KernelClosureClassMaps implements ClosureClassMaps<ir.Node> {
314 const KernelClosureClassMaps(); 314 const KernelClosureClassMaps();
315 315
316 @override 316 @override
317 ClosureClassMap getLocalFunctionMap(Local localFunction) {
318 return new ClosureClassMap(null, null, null, null);
319 }
320
321 @override
322 ClosureClassMap getMemberMap(MemberEntity member) {
323 ThisLocal thisLocal;
324 if (member.isInstanceMember) {
325 thisLocal = new ThisLocal(member);
326 }
327 return new ClosureClassMap(null, null, null, thisLocal);
328 }
329
330 @override
331 ClosureAnalysisInfo getClosureAnalysisInfo(ir.Node node) { 317 ClosureAnalysisInfo getClosureAnalysisInfo(ir.Node node) {
332 return const ClosureAnalysisInfo(); 318 return const ClosureAnalysisInfo();
333 } 319 }
334 320
335 @override 321 @override
336 LoopClosureRepresentationInfo getClosureRepresentationInfoForLoop( 322 LoopClosureRepresentationInfo getClosureRepresentationInfoForLoop(
337 ir.Node loopNode) { 323 ir.Node loopNode) {
338 return const LoopClosureRepresentationInfo(); 324 return const LoopClosureRepresentationInfo();
339 } 325 }
326
327 @override
328 ClosureRepresentationInfo getClosureRepresentationInfo(Entity entity) {
329 if (entity is MemberEntity) {
330 ThisLocal thisLocal;
331 if (entity.isInstanceMember) {
332 thisLocal = new ThisLocal(entity);
333 }
334 return new ClosureClassMap(null, null, null, thisLocal);
335 }
336 return const ClosureRepresentationInfo();
337 }
340 } 338 }
341 339
342 class KernelSorter implements Sorter { 340 class KernelSorter implements Sorter {
343 final KernelToElementMapImpl elementMap; 341 final KernelToElementMapImpl elementMap;
344 342
345 KernelSorter(this.elementMap); 343 KernelSorter(this.elementMap);
346 344
347 int _compareLibraries(LibraryEntity a, LibraryEntity b) { 345 int _compareLibraries(LibraryEntity a, LibraryEntity b) {
348 return utils.compareLibrariesUris(a.canonicalUri, b.canonicalUri); 346 return utils.compareLibrariesUris(a.canonicalUri, b.canonicalUri);
349 } 347 }
(...skipping 29 matching lines...) Expand all
379 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) { 377 Iterable<ClassEntity> sortClasses(Iterable<ClassEntity> classes) {
380 return classes.toList() 378 return classes.toList()
381 ..sort((ClassEntity a, ClassEntity b) { 379 ..sort((ClassEntity a, ClassEntity b) {
382 int r = _compareLibraries(a.library, b.library); 380 int r = _compareLibraries(a.library, b.library);
383 if (r != 0) return r; 381 if (r != 0) return r;
384 return _compareNodes( 382 return _compareNodes(
385 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b)); 383 a, elementMap.getClassNode(a), b, elementMap.getClassNode(b));
386 }); 384 });
387 } 385 }
388 } 386 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698