mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 13:28:03 +00:00
[vm] Remove strong mode and sync-async flags from pkg/vm
Change-Id: Icd2920274ca4c402b38e5774bb408d6b5e529169 Reviewed-on: https://dart-review.googlesource.com/c/79082 Commit-Queue: Alexander Markov <alexmarkov@google.com> Auto-Submit: Alexander Markov <alexmarkov@google.com> Reviewed-by: Siva Annamalai <asiva@google.com>
This commit is contained in:
parent
9a6f811466
commit
5deb1c6e81
|
@ -329,7 +329,7 @@ Future compilePlatformInternal(CompilerContext c, Uri fullOutput,
|
|||
c.options.ticker.logMs("Wrote outline to ${outlineOutput.toFilePath()}");
|
||||
|
||||
if (c.options.bytecode) {
|
||||
generateBytecode(result.component, strongMode: !c.options.legacyMode);
|
||||
generateBytecode(result.component);
|
||||
}
|
||||
|
||||
await writeComponentToFile(result.component, fullOutput,
|
||||
|
|
|
@ -26,7 +26,6 @@ final ArgParser _argParser = new ArgParser(allowTrailingOptions: true)
|
|||
help:
|
||||
'Produce kernel file for AOT compilation (enables global transformations).',
|
||||
defaultsTo: false)
|
||||
..addFlag('strong-mode', help: 'Enable strong mode', defaultsTo: true)
|
||||
..addFlag('sync-async',
|
||||
help: 'Start `async` functions synchronously', defaultsTo: true)
|
||||
..addFlag('embed-sources',
|
||||
|
@ -79,9 +78,7 @@ Future<int> compile(List<String> arguments) async {
|
|||
final String filename = options.rest.single;
|
||||
final String kernelBinaryFilename = options['output'] ?? "$filename.dill";
|
||||
final String packages = options['packages'];
|
||||
final bool strongMode = options['strong-mode'];
|
||||
final bool aot = options['aot'];
|
||||
final bool syncAsync = options['sync-async'];
|
||||
final bool tfa = options['tfa'];
|
||||
final bool genBytecode = options['gen-bytecode'];
|
||||
final bool dropAST = options['drop-ast'];
|
||||
|
@ -97,9 +94,7 @@ Future<int> compile(List<String> arguments) async {
|
|||
final errorDetector = new ErrorDetector(previousErrorHandler: errorPrinter);
|
||||
|
||||
final CompilerOptions compilerOptions = new CompilerOptions()
|
||||
..legacyMode = !strongMode
|
||||
..target = new VmTarget(
|
||||
new TargetFlags(legacyMode: !strongMode, syncAsync: syncAsync))
|
||||
..target = new VmTarget(new TargetFlags(syncAsync: true))
|
||||
..linkedDependencies = <Uri>[
|
||||
Uri.base.resolveUri(new Uri.file(platformKernel))
|
||||
]
|
||||
|
|
|
@ -61,14 +61,12 @@ bool allowDartInternalImport = false;
|
|||
|
||||
abstract class Compiler {
|
||||
final FileSystem fileSystem;
|
||||
final bool strongMode;
|
||||
final List<String> errors = new List<String>();
|
||||
|
||||
CompilerOptions options;
|
||||
|
||||
Compiler(this.fileSystem, Uri platformKernelPath,
|
||||
{this.strongMode: false,
|
||||
bool suppressWarnings: false,
|
||||
{bool suppressWarnings: false,
|
||||
bool syncAsync: false,
|
||||
String packageConfig: null}) {
|
||||
Uri packagesUri = null;
|
||||
|
@ -83,15 +81,11 @@ abstract class Compiler {
|
|||
print("DFE: packagesUri: ${packagesUri}");
|
||||
print("DFE: Platform.resolvedExecutable: ${Platform.resolvedExecutable}");
|
||||
print("DFE: platformKernelPath: ${platformKernelPath}");
|
||||
print("DFE: strongMode: ${strongMode}");
|
||||
print("DFE: syncAsync: ${syncAsync}");
|
||||
}
|
||||
|
||||
options = new CompilerOptions()
|
||||
..legacyMode = !strongMode
|
||||
..fileSystem = fileSystem
|
||||
..target = new VmTarget(
|
||||
new TargetFlags(legacyMode: !strongMode, syncAsync: syncAsync))
|
||||
..target = new VmTarget(new TargetFlags(syncAsync: true))
|
||||
..packagesFileUri = packagesUri
|
||||
..sdkSummary = platformKernelPath
|
||||
..verbose = verbose
|
||||
|
@ -130,15 +124,9 @@ class IncrementalCompilerWrapper extends Compiler {
|
|||
IncrementalCompiler generator;
|
||||
|
||||
IncrementalCompilerWrapper(FileSystem fileSystem, Uri platformKernelPath,
|
||||
{bool strongMode: false,
|
||||
bool suppressWarnings: false,
|
||||
bool syncAsync: false,
|
||||
String packageConfig: null})
|
||||
{bool suppressWarnings: false, String packageConfig: null})
|
||||
: super(fileSystem, platformKernelPath,
|
||||
strongMode: strongMode,
|
||||
suppressWarnings: suppressWarnings,
|
||||
syncAsync: syncAsync,
|
||||
packageConfig: packageConfig);
|
||||
suppressWarnings: suppressWarnings, packageConfig: packageConfig);
|
||||
|
||||
@override
|
||||
Future<Component> compileInternal(Uri script) async {
|
||||
|
@ -158,15 +146,10 @@ class SingleShotCompilerWrapper extends Compiler {
|
|||
|
||||
SingleShotCompilerWrapper(FileSystem fileSystem, Uri platformKernelPath,
|
||||
{this.requireMain: false,
|
||||
bool strongMode: false,
|
||||
bool suppressWarnings: false,
|
||||
bool syncAsync: false,
|
||||
String packageConfig: null})
|
||||
: super(fileSystem, platformKernelPath,
|
||||
strongMode: strongMode,
|
||||
suppressWarnings: suppressWarnings,
|
||||
syncAsync: syncAsync,
|
||||
packageConfig: packageConfig);
|
||||
suppressWarnings: suppressWarnings, packageConfig: packageConfig);
|
||||
|
||||
@override
|
||||
Future<Component> compileInternal(Uri script) async {
|
||||
|
@ -187,9 +170,7 @@ IncrementalCompilerWrapper lookupIncrementalCompiler(int isolateId) {
|
|||
|
||||
Future<Compiler> lookupOrBuildNewIncrementalCompiler(int isolateId,
|
||||
List sourceFiles, Uri platformKernelPath, List<int> platformKernel,
|
||||
{bool strongMode: false,
|
||||
bool suppressWarnings: false,
|
||||
bool syncAsync: false,
|
||||
{bool suppressWarnings: false,
|
||||
String packageConfig: null,
|
||||
String multirootFilepaths,
|
||||
String multirootScheme}) async {
|
||||
|
@ -206,10 +187,7 @@ Future<Compiler> lookupOrBuildNewIncrementalCompiler(int isolateId,
|
|||
// isolate needs to receive a message indicating that particular
|
||||
// isolate was shut down. Message should be handled here in this script.
|
||||
compiler = new IncrementalCompilerWrapper(fileSystem, platformKernelPath,
|
||||
strongMode: strongMode,
|
||||
suppressWarnings: suppressWarnings,
|
||||
syncAsync: syncAsync,
|
||||
packageConfig: packageConfig);
|
||||
suppressWarnings: suppressWarnings, packageConfig: packageConfig);
|
||||
isolateCompilers[isolateId] = compiler;
|
||||
}
|
||||
return compiler;
|
||||
|
@ -372,11 +350,9 @@ Future _processLoadRequest(request) async {
|
|||
final Uri script =
|
||||
inputFileUri != null ? Uri.base.resolve(inputFileUri) : null;
|
||||
final bool incremental = request[4];
|
||||
final bool strong = request[5];
|
||||
final int isolateId = request[6];
|
||||
final List sourceFiles = request[7];
|
||||
final bool suppressWarnings = request[8];
|
||||
final bool syncAsync = request[9];
|
||||
final String packageConfig = request[10];
|
||||
final String multirootFilepaths = request[11];
|
||||
final String multirootScheme = request[12];
|
||||
|
@ -389,8 +365,8 @@ Future _processLoadRequest(request) async {
|
|||
platformKernelPath = Uri.parse(platformKernelFile);
|
||||
platformKernel = request[3];
|
||||
} else {
|
||||
platformKernelPath = computePlatformBinariesLocation()
|
||||
.resolve(strong ? 'vm_platform_strong.dill' : 'vm_platform.dill');
|
||||
platformKernelPath =
|
||||
computePlatformBinariesLocation().resolve('vm_platform_strong.dill');
|
||||
}
|
||||
|
||||
Compiler compiler;
|
||||
|
@ -429,9 +405,7 @@ Future _processLoadRequest(request) async {
|
|||
if (incremental) {
|
||||
compiler = await lookupOrBuildNewIncrementalCompiler(
|
||||
isolateId, sourceFiles, platformKernelPath, platformKernel,
|
||||
strongMode: strong,
|
||||
suppressWarnings: suppressWarnings,
|
||||
syncAsync: syncAsync,
|
||||
packageConfig: packageConfig,
|
||||
multirootFilepaths: multirootFilepaths,
|
||||
multirootScheme: multirootScheme);
|
||||
|
@ -440,9 +414,7 @@ Future _processLoadRequest(request) async {
|
|||
sourceFiles, platformKernel, multirootFilepaths, multirootScheme);
|
||||
compiler = new SingleShotCompilerWrapper(fileSystem, platformKernelPath,
|
||||
requireMain: false,
|
||||
strongMode: strong,
|
||||
suppressWarnings: suppressWarnings,
|
||||
syncAsync: syncAsync,
|
||||
packageConfig: packageConfig);
|
||||
}
|
||||
|
||||
|
|
|
@ -37,8 +37,7 @@ import '../metadata/bytecode.dart';
|
|||
const String symbolForTypeCast = ' in type cast';
|
||||
|
||||
void generateBytecode(Component component,
|
||||
{bool strongMode: true,
|
||||
bool dropAST: false,
|
||||
{bool dropAST: false,
|
||||
bool omitSourcePositions: false,
|
||||
Map<String, String> environmentDefines,
|
||||
ErrorReporter errorReporter}) {
|
||||
|
@ -47,12 +46,12 @@ void generateBytecode(Component component,
|
|||
final hierarchy = new ClassHierarchy(component,
|
||||
onAmbiguousSupertypes: ignoreAmbiguousSupertypes);
|
||||
final typeEnvironment =
|
||||
new TypeEnvironment(coreTypes, hierarchy, strongMode: strongMode);
|
||||
new TypeEnvironment(coreTypes, hierarchy, strongMode: true);
|
||||
final constantsBackend =
|
||||
new VmConstantsBackend(environmentDefines, coreTypes);
|
||||
final errorReporter = new ForwardConstantEvaluationErrors(typeEnvironment);
|
||||
new BytecodeGenerator(component, coreTypes, hierarchy, typeEnvironment,
|
||||
constantsBackend, strongMode, omitSourcePositions, errorReporter)
|
||||
constantsBackend, omitSourcePositions, errorReporter)
|
||||
.visitComponent(component);
|
||||
if (dropAST) {
|
||||
new DropAST().visitComponent(component);
|
||||
|
@ -65,7 +64,6 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
|
|||
final ClassHierarchy hierarchy;
|
||||
final TypeEnvironment typeEnvironment;
|
||||
final ConstantsBackend constantsBackend;
|
||||
final bool strongMode;
|
||||
final bool omitSourcePositions;
|
||||
final ErrorReporter errorReporter;
|
||||
final BytecodeMetadataRepository metadata = new BytecodeMetadataRepository();
|
||||
|
@ -102,7 +100,6 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
|
|||
this.hierarchy,
|
||||
this.typeEnvironment,
|
||||
this.constantsBackend,
|
||||
this.strongMode,
|
||||
this.omitSourcePositions,
|
||||
this.errorReporter)
|
||||
: recognizedMethods = new RecognizedMethods(typeEnvironment) {
|
||||
|
@ -703,8 +700,13 @@ class BytecodeGenerator extends RecursiveVisitor<Null> {
|
|||
}
|
||||
locals = new LocalVariables(node);
|
||||
// TODO(alexmarkov): improve caching in ConstantEvaluator and reuse it
|
||||
constantEvaluator = new ConstantEvaluator(constantsBackend, typeEnvironment,
|
||||
coreTypes, strongMode, /* enableAsserts = */ true, errorReporter)
|
||||
constantEvaluator = new ConstantEvaluator(
|
||||
constantsBackend,
|
||||
typeEnvironment,
|
||||
coreTypes,
|
||||
/* strongMode = */ true,
|
||||
/* enableAsserts = */ true,
|
||||
errorReporter)
|
||||
..env = new EvaluationEnvironment();
|
||||
labeledStatements = <LabeledStatement, Label>{};
|
||||
switchCases = <SwitchCase, Label>{};
|
||||
|
|
|
@ -43,11 +43,9 @@ ArgParser argParser = new ArgParser(allowTrailingOptions: true)
|
|||
..addFlag('aot',
|
||||
help: 'Run compiler in AOT mode (enables whole-program transformations)',
|
||||
defaultsTo: false)
|
||||
..addFlag('strong',
|
||||
help: 'Run compiler in strong mode (uses strong mode semantics)',
|
||||
defaultsTo: false)
|
||||
..addFlag('sync-async',
|
||||
help: 'Start `async` functions synchronously.', defaultsTo: true)
|
||||
// TODO(alexmarkov): Cleanup uses in Flutter and remove these obsolete flags.
|
||||
..addFlag('strong', help: 'Obsolete', defaultsTo: true)
|
||||
..addFlag('sync-async', help: 'Obsolete', defaultsTo: true)
|
||||
..addFlag('tfa',
|
||||
help:
|
||||
'Enable global type flow analysis and related transformations in AOT mode.',
|
||||
|
@ -262,12 +260,11 @@ class FrontendCompiler implements CompilerInterface {
|
|||
final String boundaryKey = new Uuid().generateV4();
|
||||
_outputStream.writeln('result $boundaryKey');
|
||||
final Uri sdkRoot = _ensureFolderPath(options['sdk-root']);
|
||||
final String platformKernelDill = options['platform'] ??
|
||||
(options['strong'] ? 'platform_strong.dill' : 'platform.dill');
|
||||
final String platformKernelDill =
|
||||
options['platform'] ?? 'platform_strong.dill';
|
||||
final CompilerOptions compilerOptions = new CompilerOptions()
|
||||
..sdkRoot = sdkRoot
|
||||
..packagesFileUri = _getFileOrUri(_options['packages'])
|
||||
..legacyMode = !options['strong']
|
||||
..sdkSummary = sdkRoot.resolve(platformKernelDill)
|
||||
..verbose = options['verbose']
|
||||
..embedSourceText = options['embed-source-text']
|
||||
|
@ -316,8 +313,7 @@ class FrontendCompiler implements CompilerInterface {
|
|||
// Ensure that Flutter and VM targets are added to targets dictionary.
|
||||
installAdditionalTargets();
|
||||
|
||||
final TargetFlags targetFlags = new TargetFlags(
|
||||
legacyMode: !options['strong'], syncAsync: options['sync-async']);
|
||||
final TargetFlags targetFlags = new TargetFlags(syncAsync: true);
|
||||
compilerOptions.target = getTarget(options['target'], targetFlags);
|
||||
if (compilerOptions.target == null) {
|
||||
print('Failed to create front-end target ${options['target']}.');
|
||||
|
|
|
@ -64,7 +64,6 @@ Future<Component> compileToKernel(Uri source, CompilerOptions options,
|
|||
source,
|
||||
options,
|
||||
component,
|
||||
!options.legacyMode,
|
||||
useGlobalTypeFlowAnalysis,
|
||||
environmentDefines,
|
||||
enableAsserts,
|
||||
|
@ -75,9 +74,7 @@ Future<Component> compileToKernel(Uri source, CompilerOptions options,
|
|||
if (genBytecode && !errorDetector.hasCompilationErrors && component != null) {
|
||||
await runWithFrontEndCompilerContext(source, options, component, () {
|
||||
generateBytecode(component,
|
||||
strongMode: !options.legacyMode,
|
||||
dropAST: dropAST,
|
||||
environmentDefines: environmentDefines);
|
||||
dropAST: dropAST, environmentDefines: environmentDefines);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -91,40 +88,37 @@ Future _runGlobalTransformations(
|
|||
Uri source,
|
||||
CompilerOptions compilerOptions,
|
||||
Component component,
|
||||
bool strongMode,
|
||||
bool useGlobalTypeFlowAnalysis,
|
||||
Map<String, String> environmentDefines,
|
||||
bool enableAsserts,
|
||||
bool enableConstantEvaluation,
|
||||
ErrorDetector errorDetector) async {
|
||||
if (strongMode) {
|
||||
if (errorDetector.hasCompilationErrors) return;
|
||||
|
||||
final coreTypes = new CoreTypes(component);
|
||||
_patchVmConstants(coreTypes);
|
||||
|
||||
// TODO(alexmarkov, dmitryas): Consider doing canonicalization of identical
|
||||
// mixin applications when creating mixin applications in frontend,
|
||||
// so all backends (and all transformation passes from the very beginning)
|
||||
// can benefit from mixin de-duplication.
|
||||
// At least, in addition to VM/AOT case we should run this transformation
|
||||
// when building a platform dill file for VM/JIT case.
|
||||
mixin_deduplication.transformComponent(component);
|
||||
|
||||
if (enableConstantEvaluation) {
|
||||
await _performConstantEvaluation(source, compilerOptions, component,
|
||||
coreTypes, environmentDefines, enableAsserts);
|
||||
|
||||
if (errorDetector.hasCompilationErrors) return;
|
||||
}
|
||||
|
||||
final coreTypes = new CoreTypes(component);
|
||||
_patchVmConstants(coreTypes);
|
||||
|
||||
// TODO(alexmarkov, dmitryas): Consider doing canonicalization of identical
|
||||
// mixin applications when creating mixin applications in frontend,
|
||||
// so all backends (and all transformation passes from the very beginning)
|
||||
// can benefit from mixin de-duplication.
|
||||
// At least, in addition to VM/AOT case we should run this transformation
|
||||
// when building a platform dill file for VM/JIT case.
|
||||
mixin_deduplication.transformComponent(component);
|
||||
|
||||
if (enableConstantEvaluation) {
|
||||
await _performConstantEvaluation(source, compilerOptions, component,
|
||||
coreTypes, environmentDefines, strongMode, enableAsserts);
|
||||
|
||||
if (errorDetector.hasCompilationErrors) return;
|
||||
}
|
||||
|
||||
if (useGlobalTypeFlowAnalysis) {
|
||||
globalTypeFlow.transformComponent(
|
||||
compilerOptions.target, coreTypes, component);
|
||||
} else {
|
||||
devirtualization.transformComponent(coreTypes, component);
|
||||
no_dynamic_invocations_annotator.transformComponent(component);
|
||||
}
|
||||
if (useGlobalTypeFlowAnalysis) {
|
||||
globalTypeFlow.transformComponent(
|
||||
compilerOptions.target, coreTypes, component);
|
||||
} else {
|
||||
devirtualization.transformComponent(coreTypes, component);
|
||||
no_dynamic_invocations_annotator.transformComponent(component);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -152,7 +146,6 @@ Future _performConstantEvaluation(
|
|||
Component component,
|
||||
CoreTypes coreTypes,
|
||||
Map<String, String> environmentDefines,
|
||||
bool strongMode,
|
||||
bool enableAsserts) async {
|
||||
final vmConstants =
|
||||
new vm_constants.VmConstantsBackend(environmentDefines, coreTypes);
|
||||
|
@ -160,7 +153,7 @@ Future _performConstantEvaluation(
|
|||
await runWithFrontEndCompilerContext(source, compilerOptions, component, () {
|
||||
final hierarchy = new ClassHierarchy(component);
|
||||
final typeEnvironment =
|
||||
new TypeEnvironment(coreTypes, hierarchy, strongMode: strongMode);
|
||||
new TypeEnvironment(coreTypes, hierarchy, strongMode: true);
|
||||
|
||||
// TFA will remove constants fields which are unused (and respects the
|
||||
// vm/embedder entrypoints).
|
||||
|
|
|
@ -31,7 +31,7 @@ runTestCase(Uri source) async {
|
|||
await runWithFrontEndCompilerContext(source, options, component, () {
|
||||
// Need to omit source positions from bytecode as they are different on
|
||||
// Linux and Windows (due to differences in newline characters).
|
||||
generateBytecode(component, strongMode: true, omitSourcePositions: true);
|
||||
generateBytecode(component, omitSourcePositions: true);
|
||||
});
|
||||
|
||||
final actual = kernelLibraryToString(component.mainMethod.enclosingLibrary);
|
||||
|
|
|
@ -50,44 +50,6 @@ Future<int> main() async {
|
|||
generator: anyNamed('generator'),
|
||||
)).captured;
|
||||
expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
|
||||
expect(capturedArgs.single['strong'], equals(false));
|
||||
});
|
||||
|
||||
test('compile from command line (strong mode)', () async {
|
||||
final List<String> args = <String>[
|
||||
'server.dart',
|
||||
'--sdk-root',
|
||||
'sdkroot',
|
||||
'--strong',
|
||||
];
|
||||
await starter(args, compiler: compiler);
|
||||
final List<dynamic> capturedArgs = verify(compiler.compile(
|
||||
argThat(equals('server.dart')),
|
||||
captureAny,
|
||||
generator: anyNamed('generator'),
|
||||
)).captured;
|
||||
expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
|
||||
expect(capturedArgs.single['strong'], equals(true));
|
||||
expect(capturedArgs.single['sync-async'], equals(true));
|
||||
});
|
||||
|
||||
test('compile from command line (no-sync-async)', () async {
|
||||
final List<String> args = <String>[
|
||||
'server.dart',
|
||||
'--sdk-root',
|
||||
'sdkroot',
|
||||
'--strong',
|
||||
'--no-sync-async',
|
||||
];
|
||||
await starter(args, compiler: compiler);
|
||||
final List<dynamic> capturedArgs = verify(compiler.compile(
|
||||
argThat(equals('server.dart')),
|
||||
captureAny,
|
||||
generator: anyNamed('generator'),
|
||||
)).captured;
|
||||
expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
|
||||
expect(capturedArgs.single['strong'], equals(true));
|
||||
expect(capturedArgs.single['sync-async'], equals(false));
|
||||
});
|
||||
|
||||
test('compile from command line with link platform', () async {
|
||||
|
@ -105,7 +67,6 @@ Future<int> main() async {
|
|||
)).captured;
|
||||
expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
|
||||
expect(capturedArgs.single['link-platform'], equals(true));
|
||||
expect(capturedArgs.single['strong'], equals(false));
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -126,7 +87,6 @@ Future<int> main() async {
|
|||
expect(invocation.positionalArguments[0], equals('server.dart'));
|
||||
expect(
|
||||
invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
|
||||
expect(invocation.positionalArguments[1]['strong'], equals(false));
|
||||
compileCalled.sendPort.send(true);
|
||||
});
|
||||
|
||||
|
@ -150,11 +110,6 @@ Future<int> main() async {
|
|||
'--sdk-root',
|
||||
'sdkroot',
|
||||
];
|
||||
final List<String> strongArgs = <String>[
|
||||
'--sdk-root',
|
||||
'sdkroot',
|
||||
'--strong',
|
||||
];
|
||||
|
||||
test('compile one file', () async {
|
||||
final StreamController<List<int>> inputStreamController =
|
||||
|
@ -165,7 +120,6 @@ Future<int> main() async {
|
|||
expect(invocation.positionalArguments[0], equals('server.dart'));
|
||||
expect(
|
||||
invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
|
||||
expect(invocation.positionalArguments[1]['strong'], equals(false));
|
||||
compileCalled.sendPort.send(true);
|
||||
});
|
||||
|
||||
|
@ -181,31 +135,6 @@ Future<int> main() async {
|
|||
inputStreamController.close();
|
||||
});
|
||||
|
||||
test('compile one file (strong mode)', () async {
|
||||
final StreamController<List<int>> inputStreamController =
|
||||
new StreamController<List<int>>();
|
||||
final ReceivePort compileCalled = new ReceivePort();
|
||||
when(compiler.compile(any, any, generator: anyNamed('generator')))
|
||||
.thenAnswer((Invocation invocation) {
|
||||
expect(invocation.positionalArguments[0], equals('server.dart'));
|
||||
expect(
|
||||
invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
|
||||
expect(invocation.positionalArguments[1]['strong'], equals(true));
|
||||
compileCalled.sendPort.send(true);
|
||||
});
|
||||
|
||||
Future<int> result = starter(
|
||||
strongArgs,
|
||||
compiler: compiler,
|
||||
input: inputStreamController.stream,
|
||||
);
|
||||
inputStreamController.add('compile server.dart\n'.codeUnits);
|
||||
await compileCalled.first;
|
||||
inputStreamController.add('quit\n'.codeUnits);
|
||||
expect(await result, 0);
|
||||
inputStreamController.close();
|
||||
});
|
||||
|
||||
test('compile few files', () async {
|
||||
final StreamController<List<int>> inputStreamController =
|
||||
new StreamController<List<int>>();
|
||||
|
@ -217,7 +146,6 @@ Future<int> main() async {
|
|||
equals('server${counter++}.dart'));
|
||||
expect(
|
||||
invocation.positionalArguments[1]['sdk-root'], equals('sdkroot'));
|
||||
expect(invocation.positionalArguments[1]['strong'], equals(false));
|
||||
compileCalled.sendPort.send(true);
|
||||
});
|
||||
|
||||
|
@ -462,7 +390,6 @@ Future<int> main() async {
|
|||
generator: anyNamed('generator'),
|
||||
)).captured;
|
||||
expect(capturedArgs.single['sdk-root'], equals('sdkroot'));
|
||||
expect(capturedArgs.single['strong'], equals(false));
|
||||
});
|
||||
});
|
||||
});
|
||||
|
@ -489,7 +416,6 @@ Future<int> main() async {
|
|||
expect(dillFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}'
|
||||
|
@ -598,7 +524,6 @@ Future<int> main() async {
|
|||
expect(dillFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}'
|
||||
|
@ -727,7 +652,6 @@ true
|
|||
expect(dillFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}'
|
||||
|
@ -836,7 +760,6 @@ true
|
|||
// First compile app entry point A.
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}',
|
||||
|
@ -921,7 +844,6 @@ true
|
|||
expect(dillFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}'
|
||||
|
@ -1007,7 +929,6 @@ true
|
|||
expect(dillFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}',
|
||||
|
@ -1028,7 +949,6 @@ true
|
|||
expect(depFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}',
|
||||
|
@ -1063,7 +983,6 @@ true
|
|||
expect(dillFile.existsSync(), equals(false));
|
||||
final List<String> args = <String>[
|
||||
'--sdk-root=${sdkRoot.toFilePath()}',
|
||||
'--strong',
|
||||
'--incremental',
|
||||
'--platform=${platformKernel.path}',
|
||||
'--output-dill=${dillFile.path}',
|
||||
|
|
|
@ -33,7 +33,4 @@ fi
|
|||
export DART_CONFIGURATION=${DART_CONFIGURATION:-ReleaseX64}
|
||||
BIN_DIR="$OUT_DIR$DART_CONFIGURATION"
|
||||
|
||||
exec "$BIN_DIR"/dart_precompiled_runtime \
|
||||
--strong \
|
||||
--reify-generic-functions \
|
||||
"$@"
|
||||
exec "$BIN_DIR"/dart_precompiled_runtime "$@"
|
||||
|
|
|
@ -29,8 +29,6 @@ for arg in "$@"; do
|
|||
GEN_KERNEL_OPTIONS+=("$arg")
|
||||
OPTIONS+=("$arg")
|
||||
;;
|
||||
--sync-async | \
|
||||
--no-sync-async | \
|
||||
--tfa | \
|
||||
--no-tfa | \
|
||||
-D* )
|
||||
|
|
|
@ -108,12 +108,16 @@ valid_source_locations_test: RuntimeError
|
|||
# These are the non-kernel specific versions so skip tests and allow errors.
|
||||
[ $compiler == dartk ]
|
||||
add_breakpoint_rpc_test: SkipByDesign # non-kernel specific version of add_breakpoint_rpc_kernel_test.
|
||||
async_generator_breakpoint_test: Crash, RuntimeError # Issue 34746
|
||||
async_single_step_exception_test: RuntimeError # Issue 34746
|
||||
async_single_step_out_test: RuntimeError # Issue 34746
|
||||
bad_reload_test: RuntimeError # Issue 34025
|
||||
coverage_optimized_function_test: Pass, Slow
|
||||
evaluate_activation_in_method_class_test: RuntimeError
|
||||
evaluate_activation_test/instance: RuntimeError # http://dartbug.com/20047
|
||||
evaluate_activation_test/scope: RuntimeError # http://dartbug.com/20047
|
||||
pause_on_unhandled_async_exceptions2_test: Pass, Slow
|
||||
positive_token_pos_test: RuntimeError # Issue 34746
|
||||
step_through_arithmetic_test: RuntimeError # probably constant evaluator pre-evaluating e.g. 1+2
|
||||
unused_changes_in_last_reload_test: RuntimeError
|
||||
|
||||
|
@ -220,13 +224,9 @@ next_through_simple_async_test: Skip # Timeout
|
|||
step_test: Skip # Timeout
|
||||
step_through_constructor_test: Skip # Timeout
|
||||
|
||||
[ $compiler == dartk && $strong && ($arch == simarm || $arch == simarm64) ]
|
||||
async_single_step_exception_test: RuntimeError
|
||||
|
||||
[ $compiler == dartk && ($arch == simarm || $arch == simarm64 || $arch == simdbc64) ]
|
||||
add_breakpoint_rpc_kernel_test: RuntimeError # Issue #33087
|
||||
async_generator_breakpoint_test: Skip # No incremental compiler available.
|
||||
async_single_step_out_test: RuntimeError
|
||||
bad_reload_test: Skip # Times out on sim architectures, also RuntimeError.
|
||||
break_on_activation_test: RuntimeError # Issue #33087
|
||||
complex_reload_test: Skip # Times out on sim architectures, also RuntimeError.
|
||||
|
@ -251,7 +251,6 @@ get_retaining_path_rpc_test: RuntimeError # Issue #33087
|
|||
get_user_level_retaining_path_rpc_test: RuntimeError # Issue #33087
|
||||
instance_field_order_rpc_test: RuntimeError # Issue #33087
|
||||
pause_on_exceptions_test: RuntimeError, Timeout # Issue #33087
|
||||
positive_token_pos_test: Pass, RuntimeError
|
||||
reload_sources_test: Skip # Times out.
|
||||
rewind_optimized_out_test: RuntimeError # Issue #33087
|
||||
rewind_test: Pass, RuntimeError
|
||||
|
|
|
@ -1061,8 +1061,6 @@ abstract class VMKernelCompilerMixin {
|
|||
|
||||
final args = [
|
||||
_isAot ? '--aot' : '--no-aot',
|
||||
'--strong-mode',
|
||||
_configuration.noPreviewDart2 ? '--no-sync-async' : '--sync-async',
|
||||
'--platform=$vmPlatform',
|
||||
'-o',
|
||||
dillFile,
|
||||
|
|
Loading…
Reference in a new issue