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

Side by Side Diff: pkg/fletchc/lib/incremental/caching_compiler.dart

Issue 1659163007: Rename fletch -> dartino (Closed) Base URL: https://github.com/dartino/sdk.git@master
Patch Set: address comments Created 4 years, 10 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/fletchc/lib/generated_bytecodes.dart ('k') | pkg/fletchc/lib/incremental/diff.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
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.
4
5 part of fletchc_incremental;
6
7 /// Do not call this method directly. It will be made private.
8 // TODO(ahe): Make this method private.
9 Future<CompilerImpl> reuseCompiler(
10 {CompilerDiagnostics diagnosticHandler,
11 CompilerInput inputProvider,
12 CompilerOutput outputProvider,
13 List<String> options: const [],
14 CompilerImpl cachedCompiler,
15 Uri libraryRoot,
16 Uri nativesJson,
17 Uri packageConfig,
18 Uri fletchVm,
19 bool packagesAreImmutable: false,
20 Map<String, dynamic> environment,
21 ReuseLibrariesFunction reuseLibraries,
22 String platform,
23 Uri base,
24 IncrementalCompiler incrementalCompiler}) async {
25 UserTag oldTag = new UserTag('_reuseCompiler').makeCurrent();
26 // if (libraryRoot == null) {
27 // throw 'Missing libraryRoot';
28 // }
29 if (inputProvider == null) {
30 throw 'Missing inputProvider';
31 }
32 if (inputProvider is SourceFileProvider && base != null) {
33 inputProvider.cwd = base;
34 }
35 if (diagnosticHandler == null) {
36 throw 'Missing diagnosticHandler';
37 }
38 if (outputProvider == null) {
39 outputProvider = new OutputProvider();
40 }
41 if (environment == null) {
42 environment = {};
43 }
44 CompilerImpl compiler = cachedCompiler;
45 if (compiler == null ||
46 (libraryRoot != null && compiler.libraryRoot != libraryRoot) ||
47 !compiler.hasIncrementalSupport ||
48 compiler.hasCrashed ||
49 compiler.enqueuer.resolution.hasEnqueuedReflectiveElements ||
50 compiler.deferredLoadTask.isProgramSplit) {
51 if (compiler != null && compiler.hasIncrementalSupport) {
52 if (compiler.hasCrashed) {
53 throw new IncrementalCompilationFailed(
54 "Unable to reuse compiler due to crash");
55 } else if (compiler.enqueuer.resolution.hasEnqueuedReflectiveElements) {
56 throw new IncrementalCompilationFailed(
57 "Unable to reuse compiler due to dart:mirrors");
58 } else if (compiler.deferredLoadTask.isProgramSplit) {
59 throw new IncrementalCompilationFailed(
60 "Unable to reuse compiler due to deferred loading");
61 } else {
62 throw new IncrementalCompilationFailed(
63 "Unable to reuse compiler");
64 }
65 }
66 oldTag.makeCurrent();
67 FletchCompiler fletchCompiler = new FletchCompiler(
68 provider: inputProvider,
69 outputProvider: outputProvider,
70 handler: diagnosticHandler,
71 libraryRoot: libraryRoot,
72 nativesJson: nativesJson,
73 packageConfig: packageConfig,
74 fletchVm: fletchVm,
75 options: options,
76 environment: environment,
77 platform: platform,
78 incrementalCompiler: incrementalCompiler);
79 compiler = await fletchCompiler.backdoor.compilerImplementation;
80 return compiler;
81 } else {
82 for (final task in compiler.tasks) {
83 if (task.watch != null) {
84 task.watch.reset();
85 }
86 }
87 compiler
88 ..userOutputProvider = outputProvider
89 ..provider = inputProvider
90 ..handler = diagnosticHandler
91 ..enqueuer.resolution.queueIsClosed = false
92 ..enqueuer.resolution.hasEnqueuedReflectiveElements = false
93 ..enqueuer.resolution.hasEnqueuedReflectiveStaticFields = false
94 ..enqueuer.codegen.queueIsClosed = false
95 ..enqueuer.codegen.hasEnqueuedReflectiveElements = false
96 ..enqueuer.codegen.hasEnqueuedReflectiveStaticFields = false
97 ..compilationFailed = false;
98
99 if (reuseLibraries == null) {
100 reuseLibraries = (Iterable<LibraryElement> libraries) async {
101 return libraries.where((LibraryElement library) {
102 return library.isPlatformLibrary ||
103 (packagesAreImmutable && library.isPackageLibrary);
104 });
105 };
106 }
107 return compiler.libraryLoader.resetLibraries(reuseLibraries).then((_) {
108 oldTag.makeCurrent();
109 return compiler;
110 });
111 }
112 }
113
114 /// Helper class to collect sources.
115 class StringEventSink implements EventSink<String> {
116 List<String> data = <String>[];
117
118 final Function onClose;
119
120 StringEventSink(this.onClose);
121
122 void add(String event) {
123 if (data == null) throw 'StringEventSink is closed.';
124 data.add(event);
125 }
126
127 void addError(errorEvent, [StackTrace stackTrace]) {
128 throw 'addError($errorEvent, $stackTrace)';
129 }
130
131 void close() {
132 if (data != null) {
133 onClose(data.join());
134 data = null;
135 }
136 }
137 }
OLDNEW
« no previous file with comments | « pkg/fletchc/lib/generated_bytecodes.dart ('k') | pkg/fletchc/lib/incremental/diff.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698