Index: dart/pkg/dart2js_incremental/lib/dart2js_incremental.dart |
diff --git a/dart/pkg/dart2js_incremental/lib/dart2js_incremental.dart b/dart/pkg/dart2js_incremental/lib/dart2js_incremental.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6e49c02f4d91695d90f34a2cb1f944135aaad28f |
--- /dev/null |
+++ b/dart/pkg/dart2js_incremental/lib/dart2js_incremental.dart |
@@ -0,0 +1,83 @@ |
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+library dart2js_incremental; |
+ |
+import 'dart:async' show |
+ Future; |
+ |
+import 'dart:profiler' show |
+ UserTag; |
+ |
+import 'package:compiler/implementation/apiimpl.dart' show |
+ Compiler; |
+ |
+import 'package:compiler/compiler.dart' show |
+ CompilerInputProvider, |
+ CompilerOutputProvider, |
+ Diagnostic, |
+ DiagnosticHandler; |
+ |
+import 'package:compiler/implementation/dart2jslib.dart' show |
+ NullSink; |
+ |
+import 'package:compiler/implementation/js_backend/js_backend.dart' show |
+ JavaScriptBackend; |
+ |
+import 'package:compiler/implementation/elements/elements.dart' show |
+ LibraryElement; |
+ |
+part 'caching_compiler.dart'; |
+ |
+const List<String> INCREMENTAL_OPTIONS = const <String>[ |
+ '--disable-type-inference', |
+ '--incremental-support', |
+ '--no-source-maps', // TODO(ahe): Remove this. |
+]; |
+ |
+class IncrementalCompiler { |
+ final Uri libraryRoot; |
+ final Uri packageRoot; |
+ final CompilerInputProvider inputProvider; |
+ final DiagnosticHandler diagnosticHandler; |
+ final List<String> options; |
+ final CompilerOutputProvider outputProvider; |
+ final Map<String, dynamic> environment; |
+ |
+ Compiler _compiler; |
+ |
+ IncrementalCompiler({ |
+ this.libraryRoot, |
+ this.packageRoot, |
+ this.inputProvider, |
+ this.diagnosticHandler, |
+ this.options, |
+ this.outputProvider, |
+ this.environment}) { |
+ if (libraryRoot == null) { |
+ throw new ArgumentError('libraryRoot is null.'); |
+ } |
+ if (inputProvider == null) { |
+ throw new ArgumentError('inputProvider is null.'); |
+ } |
+ if (diagnosticHandler == null) { |
+ throw new ArgumentError('diagnosticHandler is null.'); |
+ } |
+ } |
+ |
+ Future<bool> compile(Uri script) { |
+ List<String> options = new List<String>.from(this.options); |
+ options.addAll(INCREMENTAL_OPTIONS); |
+ _compiler = reuseCompiler( |
+ cachedCompiler: _compiler, |
+ libraryRoot: libraryRoot, |
+ packageRoot: packageRoot, |
+ inputProvider: inputProvider, |
+ diagnosticHandler: diagnosticHandler, |
+ options: options, |
+ outputProvider: outputProvider, |
+ environment: environment); |
+ return _compiler.run(script); |
+ } |
+} |