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

Side by Side Diff: pkg/compiler/lib/src/world.dart

Issue 2981423003: Move .getLocalFunction from KernelToElementMap to KernelToLocalsMap (Closed)
Patch Set: Updated cf. comments Created 3 years, 4 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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.world; 5 library dart2js.world;
6 6
7 import 'common.dart'; 7 import 'common.dart';
8 import 'constants/constant_system.dart'; 8 import 'constants/constant_system.dart';
9 import 'common_elements.dart' show CommonElements, ElementEnvironment; 9 import 'common_elements.dart' show CommonElements, ElementEnvironment;
10 import 'elements/entities.dart'; 10 import 'elements/entities.dart';
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 // TODO(johnniwinther): Is this 'potentially called' or 'known to be called'? 370 // TODO(johnniwinther): Is this 'potentially called' or 'known to be called'?
371 void addFunctionCalledInLoop(MemberEntity element); 371 void addFunctionCalledInLoop(MemberEntity element);
372 372
373 /// Registers that [element] is guaranteed not to throw an exception. 373 /// Registers that [element] is guaranteed not to throw an exception.
374 void registerCannotThrow(FunctionEntity element); 374 void registerCannotThrow(FunctionEntity element);
375 375
376 /// Adds the closure class [cls] to the inference world. The class is 376 /// Adds the closure class [cls] to the inference world. The class is
377 /// considered directly instantiated. If [fromInstanceMember] is true, this 377 /// considered directly instantiated. If [fromInstanceMember] is true, this
378 /// closure class represents a closure that is inside an instance member, thus 378 /// closure class represents a closure that is inside an instance member, thus
379 /// has access to `this`. 379 /// has access to `this`.
380 void registerClosureClass(covariant ClassEntity cls, bool fromInstanceMember); 380 void registerClosureClass(ClassEntity cls);
381 } 381 }
382 382
383 abstract class OpenWorld implements World { 383 abstract class OpenWorld implements World {
384 /// Called to add [cls] to the set of known classes. 384 /// Called to add [cls] to the set of known classes.
385 /// 385 ///
386 /// This ensures that class hierarchy queries can be performed on [cls] and 386 /// This ensures that class hierarchy queries can be performed on [cls] and
387 /// classes that extend or implement it. 387 /// classes that extend or implement it.
388 void registerClass(covariant ClassEntity cls); 388 void registerClass(covariant ClassEntity cls);
389 389
390 void registerUsedElement(MemberEntity element); 390 void registerUsedElement(MemberEntity element);
(...skipping 909 matching lines...) Expand 10 before | Expand all | Expand 10 after
1300 MemberElement element = findMatchIn(cls, selector); 1300 MemberElement element = findMatchIn(cls, selector);
1301 if (element == null) return false; 1301 if (element == null) return false;
1302 1302
1303 if (element.isAbstract) { 1303 if (element.isAbstract) {
1304 ClassElement enclosingClass = element.enclosingClass; 1304 ClassElement enclosingClass = element.enclosingClass;
1305 return hasConcreteMatch(enclosingClass.superclass, selector); 1305 return hasConcreteMatch(enclosingClass.superclass, selector);
1306 } 1306 }
1307 return selector.appliesUntyped(element); 1307 return selector.appliesUntyped(element);
1308 } 1308 }
1309 1309
1310 void registerClosureClass(ClassElement cls, bool _) { 1310 void registerClosureClass(covariant ClassElement cls) {
1311 ClassHierarchyNode parentNode = getClassHierarchyNode(cls.superclass); 1311 ClassHierarchyNode parentNode = getClassHierarchyNode(cls.superclass);
1312 ClassHierarchyNode node = _classHierarchyNodes[cls] = 1312 ClassHierarchyNode node = _classHierarchyNodes[cls] =
1313 new ClassHierarchyNode(parentNode, cls, cls.hierarchyDepth); 1313 new ClassHierarchyNode(parentNode, cls, cls.hierarchyDepth);
1314 for (ResolutionInterfaceType type in cls.allSupertypes) { 1314 for (ResolutionInterfaceType type in cls.allSupertypes) {
1315 ClassSet subtypeSet = getClassSet(type.element); 1315 ClassSet subtypeSet = getClassSet(type.element);
1316 subtypeSet.addSubtype(node); 1316 subtypeSet.addSubtype(node);
1317 } 1317 }
1318 _classSets[cls] = new ClassSet(node); 1318 _classSets[cls] = new ClassSet(node);
1319 _updateSuperClassHierarchyNodeForClass(node); 1319 _updateSuperClassHierarchyNodeForClass(node);
1320 node.isDirectlyInstantiated = true; 1320 node.isDirectlyInstantiated = true;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1353 void computeRtiNeed(ResolutionWorldBuilder resolutionWorldBuilder, 1353 void computeRtiNeed(ResolutionWorldBuilder resolutionWorldBuilder,
1354 RuntimeTypesNeedBuilder rtiNeedBuilder, 1354 RuntimeTypesNeedBuilder rtiNeedBuilder,
1355 {bool enableTypeAssertions}) { 1355 {bool enableTypeAssertions}) {
1356 _rtiNeed = rtiNeedBuilder.computeRuntimeTypesNeed( 1356 _rtiNeed = rtiNeedBuilder.computeRuntimeTypesNeed(
1357 resolutionWorldBuilder, this, 1357 resolutionWorldBuilder, this,
1358 enableTypeAssertions: enableTypeAssertions); 1358 enableTypeAssertions: enableTypeAssertions);
1359 } 1359 }
1360 1360
1361 RuntimeTypesNeed get rtiNeed => _rtiNeed; 1361 RuntimeTypesNeed get rtiNeed => _rtiNeed;
1362 } 1362 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/kernel_ast_adapter.dart ('k') | tests/compiler/dart2js/closure/closure_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698