Commit 34782323 authored by Jonah Williams's avatar Jonah Williams Committed by Flutter GitHub Bot

[flutter_tools] Apply --no-causal-async-stacks and --lazy-async-stacks to...

[flutter_tools] Apply --no-causal-async-stacks and --lazy-async-stacks to profile/release builds (#49377)
parent 4964fb62
...@@ -49,7 +49,6 @@ class GenSnapshot { ...@@ -49,7 +49,6 @@ class GenSnapshot {
Iterable<String> additionalArgs = const <String>[], Iterable<String> additionalArgs = const <String>[],
}) { }) {
final List<String> args = <String>[ final List<String> args = <String>[
'--causal_async_stacks',
...additionalArgs, ...additionalArgs,
]; ];
...@@ -156,6 +155,13 @@ class AOTSnapshotter { ...@@ -156,6 +155,13 @@ class AOTSnapshotter {
genSnapshotArgs.add('--no-use-integer-division'); genSnapshotArgs.add('--no-use-integer-division');
} }
// Optimization arguments.
genSnapshotArgs.addAll(<String>[
// Faster async/await
'--no-causal-async-stacks',
'--lazy-async-stacks',
]);
genSnapshotArgs.add(mainPath); genSnapshotArgs.add(mainPath);
// TODO(jonahwilliams): fully remove input checks once all callers are // TODO(jonahwilliams): fully remove input checks once all callers are
......
...@@ -95,7 +95,6 @@ class CodeGeneratingKernelCompiler implements KernelCompiler { ...@@ -95,7 +95,6 @@ class CodeGeneratingKernelCompiler implements KernelCompiler {
bool linkPlatformKernelIn = false, bool linkPlatformKernelIn = false,
bool aot = false, bool aot = false,
@required BuildMode buildMode, @required BuildMode buildMode,
bool causalAsyncStacks = true,
bool trackWidgetCreation, bool trackWidgetCreation,
List<String> extraFrontEndOptions, List<String> extraFrontEndOptions,
// These arguments are currently unused. // These arguments are currently unused.
...@@ -133,7 +132,6 @@ class CodeGeneratingKernelCompiler implements KernelCompiler { ...@@ -133,7 +132,6 @@ class CodeGeneratingKernelCompiler implements KernelCompiler {
linkPlatformKernelIn: linkPlatformKernelIn, linkPlatformKernelIn: linkPlatformKernelIn,
aot: aot, aot: aot,
buildMode: buildMode, buildMode: buildMode,
causalAsyncStacks: causalAsyncStacks,
trackWidgetCreation: trackWidgetCreation, trackWidgetCreation: trackWidgetCreation,
extraFrontEndOptions: extraFrontEndOptions, extraFrontEndOptions: extraFrontEndOptions,
sdkRoot: sdkRoot, sdkRoot: sdkRoot,
......
...@@ -277,7 +277,6 @@ class KernelCompiler { ...@@ -277,7 +277,6 @@ class KernelCompiler {
@required BuildMode buildMode, @required BuildMode buildMode,
bool linkPlatformKernelIn = false, bool linkPlatformKernelIn = false,
bool aot = false, bool aot = false,
bool causalAsyncStacks = true,
@required bool trackWidgetCreation, @required bool trackWidgetCreation,
List<String> extraFrontEndOptions, List<String> extraFrontEndOptions,
String packagesPath, String packagesPath,
...@@ -313,7 +312,7 @@ class KernelCompiler { ...@@ -313,7 +312,7 @@ class KernelCompiler {
'--sdk-root', '--sdk-root',
sdkRoot, sdkRoot,
'--target=$targetModel', '--target=$targetModel',
'-Ddart.developer.causal_async_stacks=$causalAsyncStacks', '-Ddart.developer.causal_async_stacks=${buildMode == BuildMode.debug}',
for (final Object dartDefine in dartDefines) for (final Object dartDefine in dartDefines)
'-D$dartDefine', '-D$dartDefine',
..._buildModeOptions(buildMode), ..._buildModeOptions(buildMode),
...@@ -451,7 +450,6 @@ class _RejectRequest extends _CompilationRequest { ...@@ -451,7 +450,6 @@ class _RejectRequest extends _CompilationRequest {
abstract class ResidentCompiler { abstract class ResidentCompiler {
factory ResidentCompiler(String sdkRoot, { factory ResidentCompiler(String sdkRoot, {
@required BuildMode buildMode, @required BuildMode buildMode,
bool causalAsyncStacks,
bool trackWidgetCreation, bool trackWidgetCreation,
String packagesPath, String packagesPath,
List<String> fileSystemRoots, List<String> fileSystemRoots,
...@@ -512,7 +510,6 @@ class DefaultResidentCompiler implements ResidentCompiler { ...@@ -512,7 +510,6 @@ class DefaultResidentCompiler implements ResidentCompiler {
DefaultResidentCompiler( DefaultResidentCompiler(
String sdkRoot, { String sdkRoot, {
@required this.buildMode, @required this.buildMode,
this.causalAsyncStacks = true,
this.trackWidgetCreation = true, this.trackWidgetCreation = true,
this.packagesPath, this.packagesPath,
this.fileSystemRoots, this.fileSystemRoots,
...@@ -531,7 +528,6 @@ class DefaultResidentCompiler implements ResidentCompiler { ...@@ -531,7 +528,6 @@ class DefaultResidentCompiler implements ResidentCompiler {
sdkRoot = sdkRoot.endsWith('/') ? sdkRoot : '$sdkRoot/'; sdkRoot = sdkRoot.endsWith('/') ? sdkRoot : '$sdkRoot/';
final BuildMode buildMode; final BuildMode buildMode;
final bool causalAsyncStacks;
final bool trackWidgetCreation; final bool trackWidgetCreation;
final String packagesPath; final String packagesPath;
final TargetModel targetModel; final TargetModel targetModel;
...@@ -651,7 +647,7 @@ class DefaultResidentCompiler implements ResidentCompiler { ...@@ -651,7 +647,7 @@ class DefaultResidentCompiler implements ResidentCompiler {
sdkRoot, sdkRoot,
'--incremental', '--incremental',
'--target=$targetModel', '--target=$targetModel',
'-Ddart.developer.causal_async_stacks=$causalAsyncStacks', '-Ddart.developer.causal_async_stacks=${buildMode == BuildMode.debug}',
for (final Object dartDefine in dartDefines) for (final Object dartDefine in dartDefines)
'-D$dartDefine', '-D$dartDefine',
if (outputPath != null) ...<String>[ if (outputPath != null) ...<String>[
......
...@@ -98,7 +98,8 @@ Future<void> _genSnapshot( ...@@ -98,7 +98,8 @@ Future<void> _genSnapshot(
final List<String> command = <String>[ final List<String> command = <String>[
genSnapshot, genSnapshot,
'--no_causal_async_stacks', '--no-causal-async-stacks',
'--lazy-async-stacks',
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-blobs', '--snapshot_kind=app-aot-blobs',
'--vm_snapshot_data=$vmSnapshotData', '--vm_snapshot_data=$vmSnapshotData',
......
...@@ -71,6 +71,7 @@ class FuchsiaKernelCompiler { ...@@ -71,6 +71,7 @@ class FuchsiaKernelCompiler {
if (buildInfo.isProfile) '-Ddart.vm.profile=true', if (buildInfo.isProfile) '-Ddart.vm.profile=true',
if (buildInfo.mode.isRelease) '-Ddart.vm.release=true', if (buildInfo.mode.isRelease) '-Ddart.vm.release=true',
'-Ddart.developer.causal_async_stacks=${buildInfo.isDebug}',
// Use bytecode and drop the ast in JIT release mode. // Use bytecode and drop the ast in JIT release mode.
if (buildInfo.isJitRelease) ...<String>[ if (buildInfo.isJitRelease) ...<String>[
......
...@@ -121,7 +121,6 @@ void main() { ...@@ -121,7 +121,6 @@ void main() {
verify(mockProcessManager.start( verify(mockProcessManager.start(
<String>[ <String>[
'gen_snapshot', 'gen_snapshot',
'--causal_async_stacks',
'--additional_arg', '--additional_arg',
], ],
workingDirectory: anyNamed('workingDirectory'), workingDirectory: anyNamed('workingDirectory'),
...@@ -146,7 +145,6 @@ void main() { ...@@ -146,7 +145,6 @@ void main() {
verify(mockProcessManager.start( verify(mockProcessManager.start(
<String>[ <String>[
'gen_snapshot_armv7', 'gen_snapshot_armv7',
'--causal_async_stacks',
'--additional_arg', '--additional_arg',
], ],
workingDirectory: anyNamed('workingDirectory'), workingDirectory: anyNamed('workingDirectory'),
...@@ -171,7 +169,6 @@ void main() { ...@@ -171,7 +169,6 @@ void main() {
verify(mockProcessManager.start( verify(mockProcessManager.start(
<String>[ <String>[
'gen_snapshot_arm64', 'gen_snapshot_arm64',
'--causal_async_stacks',
'--additional_arg', '--additional_arg',
], ],
workingDirectory: anyNamed('workingDirectory'), workingDirectory: anyNamed('workingDirectory'),
...@@ -184,7 +181,7 @@ void main() { ...@@ -184,7 +181,7 @@ void main() {
platform: TargetPlatform.android_x64, mode: BuildMode.release)) platform: TargetPlatform.android_x64, mode: BuildMode.release))
.thenReturn('gen_snapshot'); .thenReturn('gen_snapshot');
when(mockProcessManager.start( when(mockProcessManager.start(
<String>['gen_snapshot', '--causal_async_stacks', '--strip'], <String>['gen_snapshot', '--strip'],
workingDirectory: anyNamed('workingDirectory'), workingDirectory: anyNamed('workingDirectory'),
environment: anyNamed('environment'))) environment: anyNamed('environment')))
.thenAnswer((_) => Future<Process>.value(mockProc)); .thenAnswer((_) => Future<Process>.value(mockProc));
...@@ -202,7 +199,7 @@ void main() { ...@@ -202,7 +199,7 @@ void main() {
darwinArch: null, darwinArch: null,
additionalArgs: <String>['--strip']); additionalArgs: <String>['--strip']);
verify(mockProcessManager.start( verify(mockProcessManager.start(
<String>['gen_snapshot', '--causal_async_stacks', '--strip'], <String>['gen_snapshot', '--strip'],
workingDirectory: anyNamed('workingDirectory'), workingDirectory: anyNamed('workingDirectory'),
environment: anyNamed('environment'))) environment: anyNamed('environment')))
.called(1); .called(1);
...@@ -331,6 +328,8 @@ void main() { ...@@ -331,6 +328,8 @@ void main() {
'--assembly=$assembly', '--assembly=$assembly',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
...@@ -388,6 +387,8 @@ void main() { ...@@ -388,6 +387,8 @@ void main() {
'--assembly=$assembly', '--assembly=$assembly',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
...@@ -448,6 +449,8 @@ void main() { ...@@ -448,6 +449,8 @@ void main() {
'--assembly=$assembly', '--assembly=$assembly',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
verifyNever(mockXcode.cc(argThat(contains('-fembed-bitcode')))); verifyNever(mockXcode.cc(argThat(contains('-fembed-bitcode'))));
...@@ -493,6 +496,8 @@ void main() { ...@@ -493,6 +496,8 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}', '--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
}, overrides: contextOverrides); }, overrides: contextOverrides);
...@@ -531,6 +536,8 @@ void main() { ...@@ -531,6 +536,8 @@ void main() {
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}', '--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
}, overrides: contextOverrides); }, overrides: contextOverrides);
...@@ -567,6 +574,8 @@ void main() { ...@@ -567,6 +574,8 @@ void main() {
'--deterministic', '--deterministic',
'--snapshot_kind=app-aot-assembly', '--snapshot_kind=app-aot-assembly',
'--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}', '--assembly=${globals.fs.path.join(outputPath, 'snapshot_assembly.S')}',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
}, overrides: contextOverrides); }, overrides: contextOverrides);
...@@ -597,6 +606,8 @@ void main() { ...@@ -597,6 +606,8 @@ void main() {
'--strip', '--strip',
'--no-sim-use-hardfp', '--no-sim-use-hardfp',
'--no-use-integer-division', '--no-use-integer-division',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
}, overrides: contextOverrides); }, overrides: contextOverrides);
...@@ -625,6 +636,8 @@ void main() { ...@@ -625,6 +636,8 @@ void main() {
'--snapshot_kind=app-aot-elf', '--snapshot_kind=app-aot-elf',
'--elf=build/foo/app.so', '--elf=build/foo/app.so',
'--strip', '--strip',
'--no-causal-async-stacks',
'--lazy-async-stacks',
'main.dill', 'main.dill',
]); ]);
}, overrides: contextOverrides); }, overrides: contextOverrides);
......
...@@ -64,6 +64,10 @@ void main() { ...@@ -64,6 +64,10 @@ void main() {
expect(mockFrontendServerStdIn.getAndClear(), isEmpty); expect(mockFrontendServerStdIn.getAndClear(), isEmpty);
expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n')); expect(testLogger.errorText, equals('\nCompiler message:\nline1\nline2\n'));
expect(output.outputFilename, equals('/path/to/main.dart.dill')); expect(output.outputFilename, equals('/path/to/main.dart.dill'));
final VerificationResult argVerification = verify(mockProcessManager.start(captureAny));
expect(argVerification.captured.single, containsAll(<String>[
'-Ddart.developer.causal_async_stacks=true',
]));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager, ProcessManager: () => mockProcessManager,
OutputPreferences: () => OutputPreferences(showColor: false), OutputPreferences: () => OutputPreferences(showColor: false),
...@@ -94,6 +98,7 @@ void main() { ...@@ -94,6 +98,7 @@ void main() {
'-Ddart.vm.profile=true', '-Ddart.vm.profile=true',
'-Ddart.vm.product=false', '-Ddart.vm.product=false',
'--bytecode-options=source-positions', '--bytecode-options=source-positions',
'-Ddart.developer.causal_async_stacks=false',
])); ]));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager, ProcessManager: () => mockProcessManager,
...@@ -126,6 +131,7 @@ void main() { ...@@ -126,6 +131,7 @@ void main() {
'-Ddart.vm.profile=false', '-Ddart.vm.profile=false',
'-Ddart.vm.product=true', '-Ddart.vm.product=true',
'--bytecode-options=source-positions', '--bytecode-options=source-positions',
'-Ddart.developer.causal_async_stacks=false',
])); ]));
}, overrides: <Type, Generator>{ }, overrides: <Type, Generator>{
ProcessManager: () => mockProcessManager, ProcessManager: () => mockProcessManager,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment