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

Unified Diff: pkg/compiler/lib/src/dart2js.dart

Issue 1975153002: Support (de)serialization from command-line (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Updated cf. comments. Created 4 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/options.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/dart2js.dart
diff --git a/pkg/compiler/lib/src/dart2js.dart b/pkg/compiler/lib/src/dart2js.dart
index 336dfc6f59ad3f416e7b1e6cb8ef5950ca544b4a..dc12d846259a2606567547fc2de8430895bd5175 100644
--- a/pkg/compiler/lib/src/dart2js.dart
+++ b/pkg/compiler/lib/src/dart2js.dart
@@ -10,10 +10,11 @@ import 'dart:io' show exit, File, FileMode, Platform, stdin, stderr;
import 'package:package_config/discovery.dart' show findPackages;
-import '../compiler.dart' as api;
+import '../compiler_new.dart' as api;
import 'commandline_options.dart';
import 'filenames.dart';
import 'io/source_file.dart';
+import 'options.dart' show CompilerOptions;
import 'source_file_provider.dart';
import 'util/command_line.dart';
import 'util/uri_extras.dart';
@@ -104,6 +105,8 @@ Future<api.CompilationResult> compile(List<String> argv) {
Uri libraryRoot = currentDirectory;
Uri out = currentDirectory.resolve('out.js');
Uri sourceMapOut = currentDirectory.resolve('out.js.map');
+ Uri serializationSource;
+ Uri serializationTarget;
Uri packageConfig = null;
Uri packageRoot = null;
List<String> options = new List<String>();
@@ -127,26 +130,26 @@ Future<api.CompilationResult> compile(List<String> argv) {
diagnosticHandler = new FormattingDiagnosticHandler(inputProvider);
Map<String, dynamic> environment = new Map<String, dynamic>();
- passThrough(String argument) => options.add(argument);
+ void passThrough(String argument) => options.add(argument);
if (BUILD_ID != null) {
passThrough("--build-id=$BUILD_ID");
}
- setLibraryRoot(String argument) {
+ void setLibraryRoot(String argument) {
libraryRoot = currentDirectory.resolve(extractPath(argument));
}
- setPackageRoot(String argument) {
+ void setPackageRoot(String argument) {
packageRoot = currentDirectory.resolve(extractPath(argument));
}
- setPackageConfig(String argument) {
+ void setPackageConfig(String argument) {
packageConfig =
currentDirectory.resolve(extractPath(argument, isDirectory: false));
}
- setOutput(Iterator<String> arguments) {
+ void setOutput(Iterator<String> arguments) {
optionsImplyCompilation.add(arguments.current);
String path;
if (arguments.current == '-o') {
@@ -162,7 +165,7 @@ Future<api.CompilationResult> compile(List<String> argv) {
sourceMapOut = Uri.parse('$out.map');
}
- setOutputType(String argument) {
+ void setOutputType(String argument) {
optionsImplyCompilation.add(argument);
if (argument == '--output-type=dart' ||
argument == '--output-type=dart-multi') {
@@ -182,75 +185,85 @@ Future<api.CompilationResult> compile(List<String> argv) {
passThrough(argument);
}
+ void setSerializationSource(String argument) {
+ serializationSource =
+ currentDirectory.resolve(extractPath(argument, isDirectory: false));
+ }
+
+ void setSerializationTarget(String argument) {
+ serializationTarget =
+ currentDirectory.resolve(extractPath(argument, isDirectory: false));
+ }
+
String getDepsOutput(Map<Uri, SourceFile> sourceFiles) {
var filenames = sourceFiles.keys.map((uri) => '$uri').toList();
filenames.sort();
return filenames.join("\n");
}
- setStrip(String argument) {
+ void setStrip(String argument) {
optionsImplyCompilation.add(argument);
stripArgumentSet = true;
passThrough(argument);
}
- setAnalyzeOnly(String argument) {
+ void setAnalyzeOnly(String argument) {
analyzeOnly = true;
passThrough(argument);
}
- setAnalyzeAll(String argument) {
+ void setAnalyzeAll(String argument) {
analyzeAll = true;
passThrough(argument);
}
- setAllowNativeExtensions(String argument) {
+ void setAllowNativeExtensions(String argument) {
allowNativeExtensions = true;
passThrough(argument);
}
- setVerbose(_) {
+ void setVerbose(_) {
diagnosticHandler.verbose = true;
passThrough('--verbose');
}
- implyCompilation(String argument) {
+ void implyCompilation(String argument) {
optionsImplyCompilation.add(argument);
passThrough(argument);
}
- setDumpInfo(String argument) {
+ void setDumpInfo(String argument) {
implyCompilation(argument);
dumpInfo = true;
}
- setTrustTypeAnnotations(String argument) {
+ void setTrustTypeAnnotations(String argument) {
trustTypeAnnotations = true;
implyCompilation(argument);
}
- setTrustJSInteropTypeAnnotations(String argument) {
+ void setTrustJSInteropTypeAnnotations(String argument) {
trustJSInteropTypeAnnotations = true;
implyCompilation(argument);
}
- setTrustPrimitives(String argument) {
+ void setTrustPrimitives(String argument) {
implyCompilation(argument);
}
- setCheckedMode(String argument) {
+ void setCheckedMode(String argument) {
checkedMode = true;
passThrough(argument);
}
- addInEnvironment(String argument) {
+ void addInEnvironment(String argument) {
int eqIndex = argument.indexOf('=');
String name = argument.substring(2, eqIndex);
String value = argument.substring(eqIndex + 1);
environment[name] = value;
}
- setCategories(String argument) {
+ void setCategories(String argument) {
List<String> categories = extractParameter(argument).split(',');
if (categories.contains('all')) {
categories = ["Client", "Server"];
@@ -273,7 +286,7 @@ Future<api.CompilationResult> compile(List<String> argv) {
}
}
- handleShortOptions(String argument) {
+ void handleShortOptions(String argument) {
var shortOptions = argument.substring(1).split("");
for (var shortOption in shortOptions) {
switch (shortOption) {
@@ -342,6 +355,8 @@ Future<api.CompilationResult> compile(List<String> argv) {
new OptionHandler(Flags.analyzeAll, setAnalyzeAll),
new OptionHandler(Flags.analyzeOnly, setAnalyzeOnly),
new OptionHandler(Flags.noSourceMaps, passThrough),
+ new OptionHandler(Option.serializationSource, setSerializationSource),
+ new OptionHandler(Option.serializationTarget, setSerializationTarget),
new OptionHandler(Flags.analyzeSignaturesOnly, setAnalyzeOnly),
new OptionHandler(Flags.disableNativeLiveTypeAnalysis, passThrough),
new OptionHandler('--categories=.*', setCategories),
@@ -355,6 +370,7 @@ Future<api.CompilationResult> compile(List<String> argv) {
new OptionHandler(Flags.useContentSecurityPolicy, passThrough),
new OptionHandler(Flags.enableExperimentalMirrors, passThrough),
new OptionHandler(Flags.enableAssertMessage, passThrough),
+
// TODO(floitsch): remove conditional directives flag.
// We don't provide the info-message yet, since we haven't publicly
// launched the feature yet.
@@ -427,8 +443,18 @@ Future<api.CompilationResult> compile(List<String> argv) {
helpAndFail("Cannot specify both '--package-root' and '--packages.");
}
- if ((analyzeOnly || analyzeAll) && !optionsImplyCompilation.isEmpty) {
- if (!analyzeOnly) {
+ if ((analyzeOnly || analyzeAll || serializationTarget != null) &&
+ !optionsImplyCompilation.isEmpty) {
+ if (serializationTarget != null) {
+ if (!analyzeAll) {
+ diagnosticHandler.info(
+ "Option '${Option.serializationTarget}' implies "
+ "'${Flags.analyzeAll}'.",
+ api.Diagnostic.INFO);
+ analyzeAll = true;
+ }
Siggi Cherem (dart-lang) 2016/05/17 21:54:25 maybe set analyzeOnly here too? That way we don't
Johnni Winther 2016/05/18 09:52:41 Done.
+ }
+ if (analyzeAll && !analyzeOnly) {
diagnosticHandler.info(
"Option '${Flags.analyzeAll}' implies '${Flags.analyzeOnly}'.",
api.Diagnostic.INFO);
@@ -455,7 +481,9 @@ Future<api.CompilationResult> compile(List<String> argv) {
RandomAccessFileOutputProvider outputProvider =
new RandomAccessFileOutputProvider(out, sourceMapOut,
- onInfo: diagnosticHandler.info, onFailure: fail);
+ onInfo: diagnosticHandler.info,
+ onFailure: fail,
+ serializationTarget: serializationTarget);
api.CompilationResult compilationDone(api.CompilationResult result) {
if (analyzeOnly) return result;
@@ -484,18 +512,19 @@ Future<api.CompilationResult> compile(List<String> argv) {
return result;
}
- Uri uri = currentDirectory.resolve(arguments[0]);
+ Uri script = currentDirectory.resolve(arguments[0]);
+ CompilerOptions compilerOptions = new CompilerOptions.parse(
+ entryPoint: script,
+ libraryRoot: libraryRoot,
+ packageRoot: packageRoot,
+ packageConfig: packageConfig,
+ packagesDiscoveryProvider: findPackages,
+ serializationSource: serializationSource,
+ serializationTarget: serializationTarget,
+ options: options,
+ environment: environment);
return compileFunc(
- uri,
- libraryRoot,
- packageRoot,
- inputProvider,
- diagnosticHandler,
- options,
- outputProvider,
- environment,
- packageConfig,
- findPackages)
+ compilerOptions, inputProvider, diagnosticHandler, outputProvider)
.then(compilationDone);
}
@@ -706,8 +735,15 @@ void main(List<String> arguments) {
internalMain(arguments);
}
-var exitFunc = exit;
-var compileFunc = api.compile;
+typedef void ExitFunc(int exitCode);
+typedef Future<api.CompilationResult> CompileFunc(
+ CompilerOptions compilerOptions,
+ api.CompilerInput compilerInput,
+ api.CompilerDiagnostics compilerDiagnostics,
+ api.CompilerOutput compilerOutput);
+
+ExitFunc exitFunc = exit;
+CompileFunc compileFunc = api.compile;
Future<api.CompilationResult> internalMain(List<String> arguments) {
Future onError(exception, trace) {
« no previous file with comments | « pkg/compiler/lib/src/compiler.dart ('k') | pkg/compiler/lib/src/options.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698