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

Side by Side Diff: tests/compiler/dart2js/kernel/closed_world2_test.dart

Issue 2829223003: Check equivalence of closed world based on kernel elements. (Closed)
Patch Set: Updated cf. comments. 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/world.dart ('k') | tests/compiler/dart2js/kernel/closed_world_test.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 // Partial test that the closed world computed from [WorldImpact]s derived from 5 // Partial test that the closed world computed from [WorldImpact]s derived from
6 // kernel is equivalent to the original computed from resolution. 6 // kernel is equivalent to the original computed from resolution.
7 library dart2js.kernel.closed_world2_test; 7 library dart2js.kernel.closed_world2_test;
8 8
9 import 'package:async_helper/async_helper.dart'; 9 import 'package:async_helper/async_helper.dart';
10 import 'package:compiler/src/closure.dart'; 10 import 'package:compiler/src/closure.dart';
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 import '../memory_compiler.dart'; 43 import '../memory_compiler.dart';
44 import '../serialization/helper.dart'; 44 import '../serialization/helper.dart';
45 import '../serialization/model_test_helper.dart'; 45 import '../serialization/model_test_helper.dart';
46 import '../serialization/test_helper.dart'; 46 import '../serialization/test_helper.dart';
47 47
48 import 'closed_world_test.dart'; 48 import 'closed_world_test.dart';
49 import 'impact_test.dart'; 49 import 'impact_test.dart';
50 50
51 const SOURCE = const { 51 const SOURCE = const {
52 'main.dart': ''' 52 'main.dart': '''
53 main() {} 53 main() {
54 print('Hello World');
55 }
54 ''' 56 '''
55 }; 57 };
56 58
57 main(List<String> args) { 59 main(List<String> args) {
58 Arguments arguments = new Arguments.from(args); 60 Arguments arguments = new Arguments.from(args);
59 Uri entryPoint; 61 Uri entryPoint;
60 Map<String, String> memorySourceFiles; 62 Map<String, String> memorySourceFiles;
61 if (arguments.uri != null) { 63 if (arguments.uri != null) {
62 entryPoint = arguments.uri; 64 entryPoint = arguments.uri;
63 memorySourceFiles = const <String, String>{}; 65 memorySourceFiles = const <String, String>{};
64 } else { 66 } else {
65 entryPoint = Uri.parse('memory:main.dart'); 67 entryPoint = Uri.parse('memory:main.dart');
66 memorySourceFiles = SOURCE; 68 memorySourceFiles = SOURCE;
67 } 69 }
68 70
69 asyncTest(() async { 71 asyncTest(() async {
70 enableDebugMode(); 72 enableDebugMode();
71 73
72 print('---- analyze-only ------------------------------------------------'); 74 print('---- analyze-only ------------------------------------------------');
73 Compiler compiler1 = compilerFor( 75 Compiler compiler1 = compilerFor(
74 entryPoint: entryPoint, 76 entryPoint: entryPoint,
75 memorySourceFiles: memorySourceFiles, 77 memorySourceFiles: memorySourceFiles,
76 options: [Flags.analyzeOnly, Flags.enableAssertMessage]); 78 options: [Flags.analyzeOnly, Flags.enableAssertMessage]);
77 ElementResolutionWorldBuilder.useInstantiationMap = true; 79 ElementResolutionWorldBuilder.useInstantiationMap = true;
78 compiler1.resolution.retainCachesForTesting = true; 80 compiler1.resolution.retainCachesForTesting = true;
79 await compiler1.run(entryPoint); 81 await compiler1.run(entryPoint);
80 ResolutionEnqueuer enqueuer1 = compiler1.enqueuer.resolution; 82 ResolutionEnqueuer enqueuer1 = compiler1.enqueuer.resolution;
81 BackendUsage backendUsage1 = compiler1.backend.backendUsage; 83 BackendUsage backendUsage1 = compiler1.backend.backendUsage;
82 compiler1.resolutionWorldBuilder.closeWorld(); 84 ClosedWorld closedWorld1 = compiler1.resolutionWorldBuilder.closeWorld();
83 85
84 print('---- analyze-all -------------------------------------------------'); 86 print('---- analyze-all -------------------------------------------------');
85 Compiler compiler = compilerFor( 87 Compiler compiler = compilerFor(
86 entryPoint: entryPoint, 88 entryPoint: entryPoint,
87 memorySourceFiles: memorySourceFiles, 89 memorySourceFiles: memorySourceFiles,
88 options: [ 90 options: [
89 Flags.analyzeAll, 91 Flags.analyzeAll,
90 Flags.useKernel, 92 Flags.useKernel,
91 Flags.enableAssertMessage 93 Flags.enableAssertMessage
92 ]); 94 ]);
(...skipping 16 matching lines...) Expand all
109 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0]; 111 ResolutionEnqueuerListener resolutionEnqueuerListener = list[0];
110 BackendUsageBuilder backendUsageBuilder2 = list[1]; 112 BackendUsageBuilder backendUsageBuilder2 = list[1];
111 ImpactTransformer impactTransformer = list[2]; 113 ImpactTransformer impactTransformer = list[2];
112 ResolutionEnqueuer enqueuer2 = new ResolutionEnqueuer( 114 ResolutionEnqueuer enqueuer2 = new ResolutionEnqueuer(
113 compiler.enqueuer, 115 compiler.enqueuer,
114 compiler.options, 116 compiler.options,
115 compiler.reporter, 117 compiler.reporter,
116 const TreeShakingEnqueuerStrategy(), 118 const TreeShakingEnqueuerStrategy(),
117 resolutionEnqueuerListener, 119 resolutionEnqueuerListener,
118 new KernelResolutionWorldBuilder( 120 new KernelResolutionWorldBuilder(
119 worldBuilder.elementEnvironment, 121 worldBuilder, nativeBasicData, const OpenWorldStrategy()),
120 worldBuilder.commonElements,
121 nativeBasicData,
122 const OpenWorldStrategy()),
123 new KernelWorkItemBuilder(worldBuilder, impactTransformer), 122 new KernelWorkItemBuilder(worldBuilder, impactTransformer),
124 'enqueuer from kelements'); 123 'enqueuer from kelements');
125 computeClosedWorld( 124 ClosedWorld closedWorld2 = computeClosedWorld(
126 compiler.reporter, enqueuer2, worldBuilder.elementEnvironment); 125 compiler.reporter, enqueuer2, worldBuilder.elementEnvironment);
127 BackendUsage backendUsage2 = backendUsageBuilder2.close(); 126 BackendUsage backendUsage2 = backendUsageBuilder2.close();
128 checkBackendUsage(backendUsage1, backendUsage2, equivalence); 127 checkBackendUsage(backendUsage1, backendUsage2, equivalence);
129 128
130 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2, 129 checkResolutionEnqueuers(backendUsage1, backendUsage2, enqueuer1, enqueuer2,
131 elementEquivalence: equivalence.entityEquivalence, 130 elementEquivalence: equivalence.entityEquivalence,
132 typeEquivalence: (ResolutionDartType a, DartType b) { 131 typeEquivalence: (ResolutionDartType a, DartType b) {
133 return equivalence.typeEquivalence(unalias(a), b); 132 return equivalence.typeEquivalence(unalias(a), b);
134 }, elementFilter: elementFilter, verbose: arguments.verbose); 133 }, elementFilter: elementFilter, verbose: arguments.verbose);
134
135 checkClosedWorlds(closedWorld1, closedWorld2, equivalence.entityEquivalence,
136 verbose: arguments.verbose);
135 }); 137 });
136 } 138 }
137 139
138 List createKernelResolutionEnqueuerListener( 140 List createKernelResolutionEnqueuerListener(
139 CompilerOptions options, 141 CompilerOptions options,
140 DiagnosticReporter reporter, 142 DiagnosticReporter reporter,
141 DeferredLoadTask deferredLoadTask, 143 DeferredLoadTask deferredLoadTask,
142 KernelWorldBuilder worldBuilder, 144 KernelWorldBuilder worldBuilder,
143 NativeBasicData nativeBasicData) { 145 NativeBasicData nativeBasicData) {
144 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment; 146 ElementEnvironment elementEnvironment = worldBuilder.elementEnvironment;
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
364 usage2.isInvokeOnUsed); 366 usage2.isInvokeOnUsed);
365 check(usage1, usage2, 'isRuntimeTypeUsed', usage1.isRuntimeTypeUsed, 367 check(usage1, usage2, 'isRuntimeTypeUsed', usage1.isRuntimeTypeUsed,
366 usage2.isRuntimeTypeUsed); 368 usage2.isRuntimeTypeUsed);
367 check(usage1, usage2, 'isIsolateInUse', usage1.isIsolateInUse, 369 check(usage1, usage2, 'isIsolateInUse', usage1.isIsolateInUse,
368 usage2.isIsolateInUse); 370 usage2.isIsolateInUse);
369 check(usage1, usage2, 'isFunctionApplyUsed', usage1.isFunctionApplyUsed, 371 check(usage1, usage2, 'isFunctionApplyUsed', usage1.isFunctionApplyUsed,
370 usage2.isFunctionApplyUsed); 372 usage2.isFunctionApplyUsed);
371 check(usage1, usage2, 'isNoSuchMethodUsed', usage1.isNoSuchMethodUsed, 373 check(usage1, usage2, 'isNoSuchMethodUsed', usage1.isNoSuchMethodUsed,
372 usage2.isNoSuchMethodUsed); 374 usage2.isNoSuchMethodUsed);
373 } 375 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/world.dart ('k') | tests/compiler/dart2js/kernel/closed_world_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698