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

Side by Side Diff: pkg/compiler/lib/src/universe/codegen_world_builder.dart

Issue 2810683002: Use entities in Selector methods (Closed)
Patch Set: Created 3 years, 8 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
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | pkg/compiler/lib/src/universe/selector.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 part of world_builder; 5 part of world_builder;
6 6
7 /// World builder specific to codegen. 7 /// World builder specific to codegen.
8 /// 8 ///
9 /// This adds additional access to liveness of selectors and elements. 9 /// This adds additional access to liveness of selectors and elements.
10 abstract class CodegenWorldBuilder implements WorldBuilder { 10 abstract class CodegenWorldBuilder implements WorldBuilder {
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
192 cls.allSupertypes.forEach((ResolutionInterfaceType supertype) { 192 cls.allSupertypes.forEach((ResolutionInterfaceType supertype) {
193 if (_implementedClasses.add(supertype.element)) { 193 if (_implementedClasses.add(supertype.element)) {
194 classUsed( 194 classUsed(
195 supertype.element, _getClassUsage(supertype.element).implement()); 195 supertype.element, _getClassUsage(supertype.element).implement());
196 } 196 }
197 }); 197 });
198 } 198 }
199 } 199 }
200 200
201 bool _hasMatchingSelector(Map<Selector, SelectorConstraints> selectors, 201 bool _hasMatchingSelector(Map<Selector, SelectorConstraints> selectors,
202 Element member, ClosedWorld world) { 202 MemberElement member, ClosedWorld world) {
203 if (selectors == null) return false; 203 if (selectors == null) return false;
204 for (Selector selector in selectors.keys) { 204 for (Selector selector in selectors.keys) {
205 if (selector.appliesUnnamed(member)) { 205 if (selector.appliesUnnamed(member)) {
206 SelectorConstraints masks = selectors[selector]; 206 SelectorConstraints masks = selectors[selector];
207 if (masks.applies(member, selector, world)) { 207 if (masks.applies(member, selector, world)) {
208 return true; 208 return true;
209 } 209 }
210 } 210 }
211 } 211 }
212 return false; 212 return false;
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 } 397 }
398 if (useSet.isNotEmpty) { 398 if (useSet.isNotEmpty) {
399 memberUsed(usage.entity, useSet); 399 memberUsed(usage.entity, useSet);
400 } 400 }
401 } 401 }
402 402
403 void processClassMembers(ClassElement cls, MemberUsedCallback memberUsed) { 403 void processClassMembers(ClassElement cls, MemberUsedCallback memberUsed) {
404 cls.implementation.forEachMember((_, MemberElement member) { 404 cls.implementation.forEachMember((_, MemberElement member) {
405 assert(invariant(member, member.isDeclaration)); 405 assert(invariant(member, member.isDeclaration));
406 if (!member.isInstanceMember) return; 406 if (!member.isInstanceMember) return;
407 if (member.isMalformed) return;
407 _getMemberUsage(member, memberUsed); 408 _getMemberUsage(member, memberUsed);
408 }); 409 });
409 } 410 }
410 411
411 _MemberUsage _getMemberUsage( 412 _MemberUsage _getMemberUsage(
412 MemberElement member, MemberUsedCallback memberUsed) { 413 MemberElement member, MemberUsedCallback memberUsed) {
413 assert(invariant(member, member.isDeclaration)); 414 assert(invariant(member, member.isDeclaration));
414 return _instanceMemberUsage.putIfAbsent(member, () { 415 return _instanceMemberUsage.putIfAbsent(member, () {
415 String memberName = member.name; 416 String memberName = member.name;
416 ClassElement cls = member.enclosingClass; 417 ClassElement cls = member.enclosingClass;
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
488 489
489 /// Register the constant [use] with this world builder. Returns `true` if 490 /// Register the constant [use] with this world builder. Returns `true` if
490 /// the constant use was new to the world. 491 /// the constant use was new to the world.
491 bool registerConstantUse(ConstantUse use) { 492 bool registerConstantUse(ConstantUse use) {
492 if (use.kind == ConstantUseKind.DIRECT) { 493 if (use.kind == ConstantUseKind.DIRECT) {
493 _constants.addCompileTimeConstantForEmission(use.value); 494 _constants.addCompileTimeConstantForEmission(use.value);
494 } 495 }
495 return _constantValues.add(use.value); 496 return _constantValues.add(use.value);
496 } 497 }
497 } 498 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | pkg/compiler/lib/src/universe/selector.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698