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

Side by Side Diff: tests/compiler/dart2js/equivalence/check_functions.dart

Issue 2913713004: Add model test of CodegenWorldBuilder to 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 /// Equivalence test functions for data objects. 5 /// Equivalence test functions for data objects.
6 6
7 library dart2js.equivalence.functions; 7 library dart2js.equivalence.functions;
8 8
9 import 'package:expect/expect.dart'; 9 import 'package:expect/expect.dart';
10 import 'package:compiler/src/common/resolution.dart'; 10 import 'package:compiler/src/common/resolution.dart';
11 import 'package:compiler/src/common_elements.dart'; 11 import 'package:compiler/src/common_elements.dart';
12 import 'package:compiler/src/compiler.dart'; 12 import 'package:compiler/src/compiler.dart';
13 import 'package:compiler/src/elements/types.dart'; 13 import 'package:compiler/src/elements/types.dart';
14 import 'package:compiler/src/elements/elements.dart'; 14 import 'package:compiler/src/elements/elements.dart';
15 import 'package:compiler/src/elements/entities.dart'; 15 import 'package:compiler/src/elements/entities.dart';
16 import 'package:compiler/src/enqueue.dart'; 16 import 'package:compiler/src/enqueue.dart';
17 import 'package:compiler/src/js_backend/backend_usage.dart'; 17 import 'package:compiler/src/js_backend/backend_usage.dart';
18 import 'package:compiler/src/js_backend/enqueuer.dart';
18 import 'package:compiler/src/js_backend/native_data.dart'; 19 import 'package:compiler/src/js_backend/native_data.dart';
19 import 'package:compiler/src/js_backend/interceptor_data.dart'; 20 import 'package:compiler/src/js_backend/interceptor_data.dart';
20 import 'package:compiler/src/serialization/equivalence.dart'; 21 import 'package:compiler/src/serialization/equivalence.dart';
21 import 'package:compiler/src/universe/class_set.dart'; 22 import 'package:compiler/src/universe/class_set.dart';
22 import 'package:compiler/src/universe/world_builder.dart'; 23 import 'package:compiler/src/universe/world_builder.dart';
23 import 'package:compiler/src/world.dart'; 24 import 'package:compiler/src/world.dart';
24 import 'check_helpers.dart'; 25 import 'check_helpers.dart';
25 26
26 void checkClosedWorlds(ClosedWorld closedWorld1, ClosedWorld closedWorld2, 27 void checkClosedWorlds(ClosedWorld closedWorld1, ClosedWorld closedWorld2,
27 {TestStrategy strategy: const TestStrategy(), 28 {TestStrategy strategy: const TestStrategy(),
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
620 BackendUsage backendUsage2, 621 BackendUsage backendUsage2,
621 ResolutionEnqueuer enqueuer1, 622 ResolutionEnqueuer enqueuer1,
622 ResolutionEnqueuer enqueuer2, 623 ResolutionEnqueuer enqueuer2,
623 {bool elementEquivalence(Entity a, Entity b): areElementsEquivalent, 624 {bool elementEquivalence(Entity a, Entity b): areElementsEquivalent,
624 bool typeEquivalence(DartType a, DartType b): areTypesEquivalent, 625 bool typeEquivalence(DartType a, DartType b): areTypesEquivalent,
625 bool elementFilter(Element element), 626 bool elementFilter(Element element),
626 bool verbose: false}) { 627 bool verbose: false}) {
627 ResolutionWorldBuilderBase worldBuilder1 = enqueuer1.worldBuilder; 628 ResolutionWorldBuilderBase worldBuilder1 = enqueuer1.worldBuilder;
628 ResolutionWorldBuilderBase worldBuilder2 = enqueuer2.worldBuilder; 629 ResolutionWorldBuilderBase worldBuilder2 = enqueuer2.worldBuilder;
629 630
630 checkSets( 631 checkSets(worldBuilder1.instantiatedTypes, worldBuilder2.instantiatedTypes,
631 enqueuer1.worldBuilder.instantiatedTypes, 632 "Instantiated types mismatch", typeEquivalence,
632 enqueuer2.worldBuilder.instantiatedTypes,
633 "Instantiated types mismatch",
634 typeEquivalence,
635 verbose: verbose); 633 verbose: verbose);
636 634
637 checkSets( 635 checkSets(
638 enqueuer1.worldBuilder.directlyInstantiatedClasses, 636 worldBuilder1.directlyInstantiatedClasses,
639 enqueuer2.worldBuilder.directlyInstantiatedClasses, 637 worldBuilder2.directlyInstantiatedClasses,
640 "Directly instantiated classes mismatch", 638 "Directly instantiated classes mismatch",
641 elementEquivalence, 639 elementEquivalence,
642 verbose: verbose); 640 verbose: verbose);
643 641
644 checkMaps( 642 checkMaps(
645 worldBuilder1.getInstantiationMap(), 643 worldBuilder1.getInstantiationMap(),
646 worldBuilder2.getInstantiationMap(), 644 worldBuilder2.getInstantiationMap(),
647 "Instantiated classes mismatch", 645 "Instantiated classes mismatch",
648 elementEquivalence, 646 elementEquivalence,
649 (a, b) => areInstantiationInfosEquivalent( 647 (a, b) => areInstantiationInfosEquivalent(
650 a, b, elementEquivalence, typeEquivalence), 648 a, b, elementEquivalence, typeEquivalence),
651 verbose: verbose); 649 verbose: verbose);
652 650
653 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities, 651 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities,
654 "Processed element mismatch", elementEquivalence, elementFilter: (e) { 652 "Processed element mismatch", elementEquivalence, elementFilter: (e) {
655 return elementFilter != null ? elementFilter(e) : true; 653 return elementFilter != null ? elementFilter(e) : true;
656 }, verbose: verbose); 654 }, verbose: verbose);
657 655
658 checkSets(enqueuer1.worldBuilder.isChecks, enqueuer2.worldBuilder.isChecks, 656 checkSets(worldBuilder1.isChecks, worldBuilder2.isChecks, "Is-check mismatch",
659 "Is-check mismatch", typeEquivalence, 657 typeEquivalence,
658 verbose: verbose);
659
660 checkSets(worldBuilder1.closurizedMembers, worldBuilder2.closurizedMembers,
661 "closurizedMembers", elementEquivalence,
662 verbose: verbose);
663 checkSets(worldBuilder1.fieldSetters, worldBuilder2.fieldSetters,
664 "fieldSetters", elementEquivalence,
665 verbose: verbose);
666 checkSets(
667 worldBuilder1.methodsNeedingSuperGetter,
668 worldBuilder2.methodsNeedingSuperGetter,
669 "methodsNeedingSuperGetter",
670 elementEquivalence,
671 verbose: verbose);
672
673 checkMaps(
674 worldBuilder1.classUsageForTesting,
675 worldBuilder1.classUsageForTesting,
Siggi Cherem (dart-lang) 2017/05/30 22:41:15 worldBuilder2
Johnni Winther 2017/05/31 10:46:38 You sure? ;)
676 'classUsageForTesting',
677 elementEquivalence,
678 equality,
679 verbose: verbose);
680 checkMaps(
681 worldBuilder1.staticMemberUsageForTesting,
682 worldBuilder1.staticMemberUsageForTesting,
Siggi Cherem (dart-lang) 2017/05/30 22:41:15 2
Johnni Winther 2017/05/31 10:46:38 Done.
683 'staticMemberUsageForTesting',
684 elementEquivalence,
685 equality,
686 verbose: verbose);
687 checkMaps(
688 worldBuilder1.instanceMemberUsageForTesting,
689 worldBuilder1.instanceMemberUsageForTesting,
Siggi Cherem (dart-lang) 2017/05/30 22:41:15 2
Johnni Winther 2017/05/31 10:46:38 Done.
690 'instanceMemberUsageForTesting',
691 elementEquivalence,
692 equality,
660 verbose: verbose); 693 verbose: verbose);
661 694
662 Expect.equals(backendUsage1.isInvokeOnUsed, backendUsage2.isInvokeOnUsed, 695 Expect.equals(backendUsage1.isInvokeOnUsed, backendUsage2.isInvokeOnUsed,
663 "JavaScriptBackend.hasInvokeOnSupport mismatch"); 696 "JavaScriptBackend.hasInvokeOnSupport mismatch");
664 Expect.equals( 697 Expect.equals(
665 backendUsage1.isFunctionApplyUsed, 698 backendUsage1.isFunctionApplyUsed,
666 backendUsage1.isFunctionApplyUsed, 699 backendUsage1.isFunctionApplyUsed,
667 "JavaScriptBackend.hasFunctionApplySupport mismatch"); 700 "JavaScriptBackend.hasFunctionApplySupport mismatch");
668 Expect.equals( 701 Expect.equals(
669 backendUsage1.isRuntimeTypeUsed, 702 backendUsage1.isRuntimeTypeUsed,
670 backendUsage2.isRuntimeTypeUsed, 703 backendUsage2.isRuntimeTypeUsed,
671 "JavaScriptBackend.hasRuntimeTypeSupport mismatch"); 704 "JavaScriptBackend.hasRuntimeTypeSupport mismatch");
672 Expect.equals(backendUsage1.isIsolateInUse, backendUsage2.isIsolateInUse, 705 Expect.equals(backendUsage1.isIsolateInUse, backendUsage2.isIsolateInUse,
673 "JavaScriptBackend.hasIsolateSupport mismatch"); 706 "JavaScriptBackend.hasIsolateSupport mismatch");
674 } 707 }
708
709 void checkCodegenEnqueuers(CodegenEnqueuer enqueuer1, CodegenEnqueuer enqueuer2,
710 {bool elementEquivalence(Entity a, Entity b): areElementsEquivalent,
711 bool typeEquivalence(DartType a, DartType b): areTypesEquivalent,
712 bool elementFilter(Element element),
713 bool verbose: false}) {
714 CodegenWorldBuilderImpl worldBuilder1 = enqueuer1.worldBuilder;
715 CodegenWorldBuilderImpl worldBuilder2 = enqueuer2.worldBuilder;
716
717 checkSets(worldBuilder1.instantiatedTypes, worldBuilder2.instantiatedTypes,
718 "Instantiated types mismatch", typeEquivalence,
719 verbose: verbose);
720
721 checkSets(
722 worldBuilder1.directlyInstantiatedClasses,
723 worldBuilder2.directlyInstantiatedClasses,
724 "Directly instantiated classes mismatch",
725 elementEquivalence,
726 verbose: verbose);
727
728 checkSets(enqueuer1.processedEntities, enqueuer2.processedEntities,
729 "Processed element mismatch", elementEquivalence, elementFilter: (e) {
730 return elementFilter != null ? elementFilter(e) : true;
731 }, verbose: verbose);
732
733 checkSets(worldBuilder1.isChecks, worldBuilder2.isChecks, "Is-check mismatch",
734 typeEquivalence,
735 verbose: verbose);
736
737 checkSets(
738 worldBuilder1.allReferencedStaticFields,
739 worldBuilder2.allReferencedStaticFields,
740 "Directly instantiated classes mismatch",
741 elementEquivalence,
742 verbose: verbose);
743 checkSets(worldBuilder1.closurizedMembers, worldBuilder2.closurizedMembers,
744 "closurizedMembers", elementEquivalence,
745 verbose: verbose);
746 checkSets(worldBuilder1.processedClasses, worldBuilder2.processedClasses,
747 "processedClasses", elementEquivalence,
748 verbose: verbose);
749 checkSets(
750 worldBuilder1.methodsNeedingSuperGetter,
751 worldBuilder2.methodsNeedingSuperGetter,
752 "methodsNeedingSuperGetter",
753 elementEquivalence,
754 verbose: verbose);
755 checkSets(
756 worldBuilder1.staticFunctionsNeedingGetter,
757 worldBuilder2.staticFunctionsNeedingGetter,
758 "staticFunctionsNeedingGetter",
759 elementEquivalence,
760 verbose: verbose);
761
762 checkMaps(
763 worldBuilder1.classUsageForTesting,
764 worldBuilder1.classUsageForTesting,
Siggi Cherem (dart-lang) 2017/05/30 22:41:14 also here and the two other checks below
Johnni Winther 2017/05/31 10:46:38 Done.
765 'classUsageForTesting',
766 elementEquivalence,
767 equality,
768 verbose: verbose);
769 checkMaps(
770 worldBuilder1.staticMemberUsageForTesting,
771 worldBuilder1.staticMemberUsageForTesting,
772 'staticMemberUsageForTesting',
773 elementEquivalence,
774 equality,
775 verbose: verbose);
776 checkMaps(
777 worldBuilder1.instanceMemberUsageForTesting,
778 worldBuilder1.instanceMemberUsageForTesting,
779 'instanceMemberUsageForTesting',
780 elementEquivalence,
781 equality,
782 verbose: verbose);
783 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/universe/resolution_world_builder.dart ('k') | tests/compiler/dart2js/kernel/compile_from_dill_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698