| Index: site/try/src/compiler_isolate.dart
|
| diff --git a/site/try/src/compiler_isolate.dart b/site/try/src/compiler_isolate.dart
|
| deleted file mode 100644
|
| index ea82650574906f068b90b3fb776d05513f770ea4..0000000000000000000000000000000000000000
|
| --- a/site/try/src/compiler_isolate.dart
|
| +++ /dev/null
|
| @@ -1,180 +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.
|
| -
|
| -library compiler_isolate;
|
| -
|
| -import 'dart:async';
|
| -import 'dart:html';
|
| -import 'dart:isolate';
|
| -import 'dart:convert' show JSON;
|
| -
|
| -import 'compilation.dart' show PRIVATE_SCHEME;
|
| -
|
| -import 'package:compiler/compiler.dart' as compiler;
|
| -
|
| -import 'package:compiler/src/old_to_new_api.dart' show
|
| - LegacyCompilerDiagnostics, LegacyCompilerInput;
|
| -
|
| -import 'package:dart2js_incremental/dart2js_incremental.dart' show
|
| - reuseCompiler, OutputProvider;
|
| -
|
| -import 'package:compiler/src/compiler.dart' show
|
| - Compiler;
|
| -
|
| -const bool THROW_ON_ERROR = false;
|
| -
|
| -final cachedSources = new Map<Uri, Future<String>>();
|
| -
|
| -Uri sdkLocation;
|
| -List options = [];
|
| -
|
| -var communicateViaBlobs;
|
| -
|
| -var cachedCompiler;
|
| -
|
| -void notifyDartHtml(SendPort port) {
|
| - // Notify the controlling isolate (Try Dart UI) that the program imports
|
| - // dart:html. This is used to determine how to run the program: in an iframe
|
| - // or in a worker.
|
| - port.send('dart:html');
|
| -}
|
| -
|
| -compile(source, SendPort replyTo) {
|
| - if (sdkLocation == null) {
|
| - // The first message received gives us the URI of this web app.
|
| - if (source.endsWith('/sdk.json')) {
|
| - var request = new HttpRequest();
|
| - request.open('GET', source, async: false);
|
| - request.send(null);
|
| - if (request.status != 200) {
|
| - throw 'SDK not found at $source';
|
| - }
|
| - sdkLocation = Uri.parse('sdk:/sdk/');
|
| - JSON.decode(request.responseText).forEach((file, content) {
|
| - cachedSources[Uri.parse(file)] = new Future<String>.value(content);
|
| - });
|
| - } else {
|
| - sdkLocation = Uri.parse(source);
|
| - }
|
| - replyTo.send(null);
|
| - return;
|
| - }
|
| - if (source is List) {
|
| - String messageType = (source.length > 0) ? source[0] : null;
|
| - var data = (source.length > 1) ? source[1] : null;
|
| - if (messageType == 'options') {
|
| - options = data as List;
|
| - } if (messageType == 'communicateViaBlobs') {
|
| - communicateViaBlobs = data as bool;
|
| - }
|
| - return;
|
| - }
|
| - int charactersRead = 0;
|
| - Future<String> inputProvider(Uri uri) {
|
| - Future<String> future;
|
| - if (uri.scheme == 'sdk') {
|
| - if (uri.path.endsWith('/lib/html/dart2js/html_dart2js.dart')) {
|
| - notifyDartHtml(replyTo);
|
| - }
|
| - future = cachedSources[uri];
|
| - } else if (uri.scheme == 'http' || uri.scheme == 'https') {
|
| - future =
|
| - cachedSources.putIfAbsent(uri, () => HttpRequest.getString('$uri'));
|
| - } else if ('$uri' == '$PRIVATE_SCHEME:/main.dart') {
|
| - future = new Future<String>.value(source);
|
| - } else if (uri.scheme == PRIVATE_SCHEME) {
|
| - future = HttpRequest.getString('project${uri.path}');
|
| - }
|
| - if (future == null) {
|
| - future = new Future<String>.error('$uri: Not found');
|
| - }
|
| - return future.then((String value) {
|
| - charactersRead += value.length;
|
| - return value;
|
| - }).catchError((Event event) {
|
| - var target = event.target;
|
| - if (target is HttpRequest) {
|
| - throw '$uri: ${target.statusText}';
|
| - } else {
|
| - throw event;
|
| - }
|
| - }, test: (error) => error is Event);
|
| - }
|
| - void handler(Uri uri, int begin, int end,
|
| - String message, compiler.Diagnostic kind) {
|
| - replyTo.send(['diagnostic', { 'uri': '$uri',
|
| - 'begin': begin,
|
| - 'end': end,
|
| - 'message': message,
|
| - 'kind': kind.name }]);
|
| - if (THROW_ON_ERROR && kind == compiler.Diagnostic.ERROR) {
|
| - throw new Exception('Throw on error');
|
| - }
|
| - }
|
| - Stopwatch compilationTimer = new Stopwatch()..start();
|
| - OutputProvider outputProvider = new OutputProvider();
|
| - reuseCompiler(
|
| - diagnosticHandler: new LegacyCompilerDiagnostics(handler),
|
| - inputProvider: new LegacyCompilerInput(inputProvider),
|
| - outputProvider: outputProvider,
|
| - options: options,
|
| - cachedCompiler: cachedCompiler,
|
| - libraryRoot: sdkLocation,
|
| - packageRoot: Uri.base.resolve('/packages/'),
|
| - packagesAreImmutable: true).then((Compiler newCompiler) {
|
| - cachedCompiler = newCompiler;
|
| - return cachedCompiler.run(Uri.parse('$PRIVATE_SCHEME:/main.dart'));
|
| - }).then((success) {
|
| - compilationTimer.stop();
|
| - print('Compilation took ${compilationTimer.elapsed}');
|
| - if (cachedCompiler.libraryLoader
|
| - .lookupLibrary(Uri.parse('dart:html')) != null) {
|
| - notifyDartHtml(replyTo);
|
| - }
|
| - String js = outputProvider['.js'];
|
| - if (js == null) {
|
| - if (!options.contains('--analyze-only')) replyTo.send('failed');
|
| - } else {
|
| - var url;
|
| - handler(null, 0, 0,
|
| - 'Compiled ${source.length}/${charactersRead} characters Dart'
|
| - ' -> ${js.length} characters.',
|
| - compiler.Diagnostic.VERBOSE_INFO);
|
| - if (communicateViaBlobs) {
|
| - try {
|
| - // At least Safari and Firefox do not support creating an
|
| - // object URL from a web worker. MDN claims that it will be
|
| - // supported in Firefox 21.
|
| - url = Url.createObjectUrl(new Blob([js], 'application/javascript'));
|
| - } catch (_) {
|
| - // Ignored.
|
| - }
|
| - } else {
|
| - url = null;
|
| - }
|
| - if (url != null) {
|
| - replyTo.send(['url', url]);
|
| - } else {
|
| - replyTo.send(['code', js]);
|
| - }
|
| - }
|
| - }).catchError((e, trace) {
|
| - replyTo.send(['crash', '$e, $trace']);
|
| - }).whenComplete(() {
|
| - replyTo.send('done');
|
| - });
|
| -}
|
| -
|
| -void main(List<String> arguments, SendPort port) {
|
| - ReceivePort replyTo = new ReceivePort();
|
| - port.send(replyTo.sendPort);
|
| - replyTo.listen((message) {
|
| - try {
|
| - List list = message as List;
|
| - compile(list[0], list[1]);
|
| - } catch (exception, stack) {
|
| - port.send('$exception\n$stack');
|
| - }
|
| - });
|
| -}
|
|
|