| OLD | NEW |
| 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 387 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 break; | 398 break; |
| 399 case StaticUseKind.DIRECT_INVOKE: | 399 case StaticUseKind.DIRECT_INVOKE: |
| 400 _MemberUsage instanceUsage = | 400 _MemberUsage instanceUsage = |
| 401 _getMemberUsage(staticUse.element, memberUsed); | 401 _getMemberUsage(staticUse.element, memberUsed); |
| 402 memberUsed(instanceUsage.entity, instanceUsage.invoke()); | 402 memberUsed(instanceUsage.entity, instanceUsage.invoke()); |
| 403 _instanceMembersByName[instanceUsage.entity.name] | 403 _instanceMembersByName[instanceUsage.entity.name] |
| 404 ?.remove(instanceUsage); | 404 ?.remove(instanceUsage); |
| 405 useSet.addAll(usage.normalUse()); | 405 useSet.addAll(usage.normalUse()); |
| 406 break; | 406 break; |
| 407 } | 407 } |
| 408 memberUsed(usage.entity, useSet); | 408 if (useSet.isNotEmpty) { |
| 409 memberUsed(usage.entity, useSet); |
| 410 } |
| 409 } | 411 } |
| 410 | 412 |
| 411 void processClassMembers(ClassElement cls, MemberUsedCallback memberUsed) { | 413 void processClassMembers(ClassElement cls, MemberUsedCallback memberUsed) { |
| 412 cls.implementation.forEachMember((_, MemberElement member) { | 414 cls.implementation.forEachMember((_, MemberElement member) { |
| 413 assert(invariant(member, member.isDeclaration)); | 415 assert(invariant(member, member.isDeclaration)); |
| 414 if (!member.isInstanceMember) return; | 416 if (!member.isInstanceMember) return; |
| 415 _getMemberUsage(member, memberUsed); | 417 _getMemberUsage(member, memberUsed); |
| 416 }); | 418 }); |
| 417 } | 419 } |
| 418 | 420 |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 487 return true; | 489 return true; |
| 488 } | 490 } |
| 489 return false; | 491 return false; |
| 490 } | 492 } |
| 491 | 493 |
| 492 while (cls != null && processClass(cls)) { | 494 while (cls != null && processClass(cls)) { |
| 493 cls = cls.superclass; | 495 cls = cls.superclass; |
| 494 } | 496 } |
| 495 } | 497 } |
| 496 } | 498 } |
| OLD | NEW |