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

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

Issue 3009473002: Stop using useKernelInSsa in compileMultiple (Closed)
Patch Set: Updated cf. comment Created 3 years, 3 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 | « no previous file | no next file » | 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.compiler_helper; 7 library dart2js.kernel.compiler_helper;
8 8
9 import 'dart:async'; 9 import 'dart:async';
10 import 'dart:io'; 10 import 'dart:io';
11 11
12 import 'package:compiler/compiler_new.dart'; 12 import 'package:compiler/compiler_new.dart';
13 import 'package:compiler/src/commandline_options.dart'; 13 import 'package:compiler/src/commandline_options.dart';
14 import 'package:compiler/src/common.dart'; 14 import 'package:compiler/src/common.dart';
15 import 'package:compiler/src/common/names.dart';
16 import 'package:compiler/src/common/tasks.dart'; 15 import 'package:compiler/src/common/tasks.dart';
17 import 'package:compiler/src/compiler.dart'; 16 import 'package:compiler/src/compiler.dart';
18 import 'package:compiler/src/elements/elements.dart';
19 import 'package:compiler/src/filenames.dart'; 17 import 'package:compiler/src/filenames.dart';
20 import 'package:compiler/src/kernel/element_map.dart'; 18 import 'package:compiler/src/kernel/element_map.dart';
21 import 'package:compiler/src/kernel/kernel_strategy.dart'; 19 import 'package:compiler/src/kernel/kernel_strategy.dart';
22 import 'package:compiler/src/library_loader.dart'; 20 import 'package:compiler/src/library_loader.dart';
23 import 'package:compiler/src/universe/world_builder.dart'; 21 import 'package:compiler/src/universe/world_builder.dart';
24 import 'package:compiler/src/util/util.dart'; 22 import 'package:compiler/src/util/util.dart';
25 import 'package:expect/expect.dart';
26 import 'package:kernel/ast.dart' as ir; 23 import 'package:kernel/ast.dart' as ir;
27 import '../memory_compiler.dart'; 24 import '../memory_compiler.dart';
28 import '../../../../pkg/compiler/tool/generate_kernel.dart' as generate; 25 import '../../../../pkg/compiler/tool/generate_kernel.dart' as generate;
29 26
30 typedef Future<Compiler> CompileFunction(); 27 typedef Future<Compiler> CompileFunction();
31 28
32 /// Create multiple compilations for a list of [sources]. 29 /// Create multiple compilations for a list of [sources].
33 /// 30 ///
34 /// This methods speeds up testing kernel based compilation by creating the IR 31 /// This methods speeds up testing kernel based compilation by creating the IR
35 /// nodes for all [sources] at the same time. The returned list of 32 /// nodes for all [sources] at the same time. The returned list of
36 /// [CompileFunction]s compiles one of the [source] at a time using the kernel 33 /// [CompileFunction]s compiles one of the [source] at a time using the kernel
37 /// based compiler. 34 /// based compiler.
38 /// 35 ///
39 /// Currently, the returned compile function only runs with '--analyze-only' 36 /// Currently, the returned compile function only runs with '--analyze-only'
40 /// flag. 37 /// flag.
41 Future<List<CompileFunction>> compileMultiple(List<String> sources) async { 38 Future<List<CompileFunction>> compileMultiple(List<String> sources) async {
42 List<Uri> uris = <Uri>[];
43 Uri entryPoint = Uri.parse('memory:main.dart'); 39 Uri entryPoint = Uri.parse('memory:main.dart');
44 Map<String, String> memorySourceFiles = <String, String>{
45 'main.dart': 'main() {}'
46 };
47 for (String source in sources) {
48 String name = 'input${memorySourceFiles.length}.dart';
49 Uri uri = Uri.parse('memory:$name');
50 memorySourceFiles[name] = source;
51 uris.add(uri);
52 }
53 Compiler compiler = compilerFor(
54 entryPoint: entryPoint,
55 memorySourceFiles: memorySourceFiles,
56 options: [
57 Flags.analyzeAll,
58 Flags.useKernelInSsa,
59 Flags.enableAssertMessage
60 ]);
61 compiler.librariesToAnalyzeWhenRun = uris;
62 await compiler.run(entryPoint);
63 40
64 List<CompileFunction> compilers = <CompileFunction>[]; 41 List<CompileFunction> compilers = <CompileFunction>[];
65 for (Uri uri in uris) { 42 for (String source in sources) {
66 compilers.add(() async { 43 compilers.add(() async {
67 Compiler compiler2 = compilerFor( 44 Compiler compiler = compilerFor(
68 entryPoint: uri, 45 entryPoint: entryPoint,
69 memorySourceFiles: memorySourceFiles, 46 memorySourceFiles: {
47 'main.dart': source
48 },
70 options: [ 49 options: [
71 Flags.analyzeOnly, 50 Flags.analyzeOnly,
72 Flags.enableAssertMessage, 51 Flags.enableAssertMessage,
73 Flags.useKernel 52 Flags.useKernel
74 ]); 53 ]);
75 ElementResolutionWorldBuilder.useInstantiationMap = true; 54 ElementResolutionWorldBuilder.useInstantiationMap = true;
76 compiler2.resolution.retainCachesForTesting = true; 55 compiler.resolution.retainCachesForTesting = true;
77 KernelFrontEndStrategy frontendStrategy = compiler2.frontendStrategy; 56 await compiler.run(entryPoint);
78 KernelToElementMapForImpact elementMap = frontendStrategy.elementMap; 57 return compiler;
79 ir.Program program = new ir.Program(
80 libraries:
81 compiler.backend.kernelTask.kernel.libraryDependencies(uri));
82 LibraryElement library = compiler.libraryLoader.lookupLibrary(uri);
83 Expect.isNotNull(library, 'No library found for $uri');
84 program.mainMethod = compiler.backend.kernelTask.kernel
85 .functionToIr(library.findExported(Identifiers.main));
86 compiler2.libraryLoader = new MemoryKernelLibraryLoaderTask(
87 elementMap, compiler2.reporter, compiler2.measurer, program);
88 await compiler2.run(uri);
89 return compiler2;
90 }); 58 });
91 } 59 }
92 return compilers; 60 return compilers;
93 } 61 }
94 62
95 /// Analyze [memorySourceFiles] with [entryPoint] as entry-point using the 63 /// Analyze [memorySourceFiles] with [entryPoint] as entry-point using the
96 /// kernel based element model. The returned [Pair] contains the compiler used 64 /// kernel based element model. The returned [Pair] contains the compiler used
97 /// to create the IR and the kernel based compiler. 65 /// to create the IR and the kernel based compiler.
98 Future<Pair<Compiler, Compiler>> analyzeOnly( 66 Future<Pair<Compiler, Compiler>> analyzeOnly(
99 Uri entryPoint, Map<String, String> memorySourceFiles, 67 Uri entryPoint, Map<String, String> memorySourceFiles,
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 diagnosticHandler: diagnosticHandler, 166 diagnosticHandler: diagnosticHandler,
199 outputProvider: compilerOutput); 167 outputProvider: compilerOutput);
200 ElementResolutionWorldBuilder.useInstantiationMap = true; 168 ElementResolutionWorldBuilder.useInstantiationMap = true;
201 compiler.resolution.retainCachesForTesting = true; 169 compiler.resolution.retainCachesForTesting = true;
202 if (beforeRun != null) { 170 if (beforeRun != null) {
203 beforeRun(compiler); 171 beforeRun(compiler);
204 } 172 }
205 await compiler.run(entryPoint); 173 await compiler.run(entryPoint);
206 return compiler; 174 return compiler;
207 } 175 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698