| Index: pkg/dart2js_incremental/lib/caching_compiler.dart
|
| diff --git a/pkg/dart2js_incremental/lib/caching_compiler.dart b/pkg/dart2js_incremental/lib/caching_compiler.dart
|
| deleted file mode 100644
|
| index 4b530c8e03b37d121662a1260a90192a63dbaa11..0000000000000000000000000000000000000000
|
| --- a/pkg/dart2js_incremental/lib/caching_compiler.dart
|
| +++ /dev/null
|
| @@ -1,189 +0,0 @@
|
| -// Copyright (c) 2013, 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.
|
| -
|
| -part of dart2js_incremental;
|
| -
|
| -/// Do not call this method directly. It will be made private.
|
| -// TODO(ahe): Make this method private.
|
| -Future<CompilerImpl> reuseCompiler(
|
| - {CompilerDiagnostics diagnosticHandler,
|
| - CompilerInput inputProvider,
|
| - CompilerOutput outputProvider,
|
| - List<String> options: const [],
|
| - CompilerImpl cachedCompiler,
|
| - Uri libraryRoot,
|
| - Uri packageRoot,
|
| - Uri packageConfig,
|
| - bool packagesAreImmutable: false,
|
| - Map<String, dynamic> environment,
|
| - Future<bool> reuseLibrary(LibraryElement library)}) {
|
| - UserTag oldTag = new UserTag('_reuseCompiler').makeCurrent();
|
| - if (libraryRoot == null) {
|
| - throw 'Missing libraryRoot';
|
| - }
|
| - if (inputProvider == null) {
|
| - throw 'Missing inputProvider';
|
| - }
|
| - if (diagnosticHandler == null) {
|
| - throw 'Missing diagnosticHandler';
|
| - }
|
| - if (outputProvider == null) {
|
| - outputProvider = const NullCompilerOutput();
|
| - }
|
| - if (environment == null) {
|
| - environment = {};
|
| - }
|
| - CompilerImpl compiler = cachedCompiler;
|
| - JavaScriptBackend backend = compiler?.backend;
|
| - if (compiler == null ||
|
| - compiler.libraryRoot != libraryRoot ||
|
| - !compiler.options.hasIncrementalSupport ||
|
| - compiler.hasCrashed ||
|
| - backend.mirrorsAnalysis.resolutionHandler.hasEnqueuedReflectiveElements ||
|
| - compiler.deferredLoadTask.isProgramSplit) {
|
| - if (compiler != null && compiler.options.hasIncrementalSupport) {
|
| - print('***FLUSH***');
|
| - if (compiler.hasCrashed) {
|
| - print('Unable to reuse compiler due to crash.');
|
| - } else if (backend.mirrorsAnalysis.resolutionHandler
|
| - .hasEnqueuedReflectiveElements) {
|
| - print('Unable to reuse compiler due to dart:mirrors.');
|
| - } else if (compiler.deferredLoadTask.isProgramSplit) {
|
| - print('Unable to reuse compiler due to deferred loading.');
|
| - } else {
|
| - print('Unable to reuse compiler.');
|
| - }
|
| - }
|
| - oldTag.makeCurrent();
|
| - compiler = new CompilerImpl(
|
| - inputProvider,
|
| - outputProvider,
|
| - diagnosticHandler,
|
| - new CompilerOptions.parse(
|
| - libraryRoot: libraryRoot,
|
| - packageRoot: packageRoot,
|
| - packageConfig: packageConfig,
|
| - options: options,
|
| - environment: environment));
|
| - backend = compiler.backend;
|
| -
|
| - Uri core = Uri.parse("dart:core");
|
| -
|
| - return compiler.setupSdk().then((_) {
|
| - return compiler.libraryLoader.loadLibrary(core).then((_) {
|
| - // Likewise, always be prepared for runtimeType support.
|
| - // TODO(johnniwinther): Add global switch to force RTI.
|
| - compiler.resolutionWorldBuilder.hasRuntimeTypeSupport = true;
|
| - compiler.enqueuer.resolution.applyImpact(backend.registerRuntimeType());
|
| - return compiler;
|
| - });
|
| - });
|
| - } else {
|
| - compiler.tasks.forEach((t) => t.clearMeasurements());
|
| - compiler
|
| - ..userOutputProvider = outputProvider
|
| - ..provider = inputProvider
|
| - ..handler = diagnosticHandler
|
| - ..enqueuer.resolution.queueIsClosed = false
|
| - ..enqueuer.resolution.hasEnqueuedReflectiveElements = false
|
| - ..enqueuer.resolution.hasEnqueuedReflectiveStaticFields = false
|
| - ..enqueuer.codegen.queueIsClosed = false
|
| - ..enqueuer.codegen.hasEnqueuedReflectiveElements = false
|
| - ..enqueuer.codegen.hasEnqueuedReflectiveStaticFields = false
|
| - ..compilationFailed = false;
|
| - JavaScriptBackend backend = compiler.backend;
|
| - full.Emitter emitter = backend.emitter.emitter;
|
| -
|
| - // TODO(ahe): Seems this cache only serves to tell
|
| - // [emitter.invalidateCaches] if it was invoked on a full compile (in
|
| - // which case nothing should be invalidated), or if it is an incremental
|
| - // compilation (in which case, holders/owners of newly compiled methods
|
| - // must be invalidated).
|
| - emitter.cachedElements.add(null);
|
| -
|
| - compiler.enqueuer.codegen
|
| - ..newlyEnqueuedElements.clear()
|
| - ..newlySeenSelectors.clear();
|
| -
|
| - emitter.nsmEmitter
|
| - ..trivialNsmHandlers.clear();
|
| -
|
| - backend.emitter.typeTestRegistry
|
| - ..checkedClasses = null
|
| - ..checkedFunctionTypes = null
|
| - ..rtiNeededClasses.clear()
|
| - ..cachedClassesUsingTypeVariableTests = null;
|
| -
|
| - emitter.interceptorEmitter
|
| - ..interceptorInvocationNames.clear();
|
| -
|
| - backend.emitter.nativeEmitter
|
| - ..hasNativeClasses = false
|
| - ..nativeMethods.clear();
|
| -
|
| - backend.emitter.readTypeVariables.clear();
|
| -
|
| - emitter
|
| - ..outputBuffers.clear()
|
| - ..classesCollector = null
|
| - ..mangledFieldNames.clear()
|
| - ..mangledGlobalFieldNames.clear()
|
| - ..recordedMangledNames.clear()
|
| - ..clearCspPrecompiledNodes()
|
| - ..elementDescriptors.clear();
|
| -
|
| - backend
|
| - ..preMirrorsMethodCount = 0;
|
| -
|
| - if (reuseLibrary == null) {
|
| - reuseLibrary = (LibraryElement library) {
|
| - return new Future.value(
|
| - library.isPlatformLibrary ||
|
| - (packagesAreImmutable && library.isPackageLibrary));
|
| - };
|
| - }
|
| - return compiler.libraryLoader.resetAsync(reuseLibrary).then((_) {
|
| - oldTag.makeCurrent();
|
| - return compiler;
|
| - });
|
| - }
|
| -}
|
| -
|
| -/// Helper class to collect sources.
|
| -class StringEventSink implements EventSink<String> {
|
| - List<String> data = <String>[];
|
| -
|
| - final Function onClose;
|
| -
|
| - StringEventSink(this.onClose);
|
| -
|
| - void add(String event) {
|
| - if (data == null) throw 'StringEventSink is closed.';
|
| - data.add(event);
|
| - }
|
| -
|
| - void addError(errorEvent, [StackTrace stackTrace]) {
|
| - throw 'addError($errorEvent, $stackTrace)';
|
| - }
|
| -
|
| - void close() {
|
| - if (data != null) {
|
| - onClose(data.join());
|
| - data = null;
|
| - }
|
| - }
|
| -}
|
| -
|
| -/// Output provider which collect output in [output].
|
| -class OutputProvider implements CompilerOutput {
|
| - final Map<String, String> output = new Map<String, String>();
|
| -
|
| - EventSink<String> createEventSink(String name, String extension) {
|
| - return new StringEventSink((String data) {
|
| - output['$name.$extension'] = data;
|
| - });
|
| - }
|
| -
|
| - String operator[] (String key) => output[key];
|
| -}
|
|
|