Skip to content

Commit 882a6b5

Browse files
alexmarkovcommit-bot@chromium.org
authored andcommitted
Enable bytecode in AOT compilation pipeline
Change-Id: I3f1bb7d56522cf5dfedf68c022fbed59c3d04717 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118103 Commit-Queue: Alexander Markov <[email protected]> Reviewed-by: Ryan Macnak <[email protected]> Reviewed-by: Siva Annamalai <[email protected]>
1 parent b4ad2f2 commit 882a6b5

File tree

5 files changed

+23
-12
lines changed

5 files changed

+23
-12
lines changed

pkg/frontend_server/lib/frontend_server.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ ArgParser argParser = ArgParser(allowTrailingOptions: true)
148148
..addFlag('track-widget-creation',
149149
help: 'Run a kernel transformer to track creation locations for widgets.',
150150
defaultsTo: false)
151-
..addFlag('gen-bytecode', help: 'Generate bytecode', defaultsTo: false)
151+
..addFlag('gen-bytecode', help: 'Generate bytecode', defaultsTo: null)
152152
..addMultiOption('bytecode-options',
153153
help: 'Specify options for bytecode generation:',
154154
valueHelp: 'opt1,opt2,...',
@@ -374,12 +374,13 @@ class FrontendCompiler implements CompilerInterface {
374374
return false;
375375
}
376376

377-
compilerOptions.bytecode = options['gen-bytecode'];
377+
compilerOptions.bytecode = options['gen-bytecode'] ?? options['aot'];
378378
final BytecodeOptions bytecodeOptions = BytecodeOptions(
379-
enableAsserts: options['enable-asserts'],
380-
emitSourceFiles: options['embed-source-text'],
381-
environmentDefines: environmentDefines)
382-
..parseCommandLineFlags(options['bytecode-options']);
379+
enableAsserts: options['enable-asserts'],
380+
emitSourceFiles: options['embed-source-text'],
381+
environmentDefines: environmentDefines,
382+
aot: options['aot'],
383+
)..parseCommandLineFlags(options['bytecode-options']);
383384

384385
compilerOptions.target = createFrontEndTarget(
385386
options['target'],

pkg/vm/lib/bytecode/options.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,15 @@ class BytecodeOptions {
4848
this.keepUnreachableCode = false,
4949
this.avoidClosureCallInstructions = false,
5050
this.showBytecodeSizeStatistics = false,
51+
bool aot = false,
5152
this.environmentDefines = const <String, String>{}}) {
5253
causalAsyncStacks ??=
5354
environmentDefines['dart.developer.causal_async_stacks'] == 'true';
55+
if (aot) {
56+
emitSourcePositions = true;
57+
emitLocalVarInfo = true;
58+
causalAsyncStacks = true;
59+
}
5460
}
5561

5662
void parseCommandLineFlags(List<String> flags) {

pkg/vm/lib/kernel_front_end.dart

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ void declareCompilerOptions(ArgParser args) {
102102
help:
103103
'Split resulting kernel file into multiple files (one per package).',
104104
defaultsTo: false);
105-
args.addFlag('gen-bytecode', help: 'Generate bytecode', defaultsTo: false);
105+
args.addFlag('gen-bytecode', help: 'Generate bytecode', defaultsTo: null);
106106
args.addMultiOption('bytecode-options',
107107
help: 'Specify options for bytecode generation:',
108108
valueHelp: 'opt1,opt2,...',
@@ -153,7 +153,7 @@ Future<int> runCompiler(ArgResults options, String usage) async {
153153
final bool tfa = options['tfa'];
154154
final bool linkPlatform = options['link-platform'];
155155
final bool embedSources = options['embed-sources'];
156-
final bool genBytecode = options['gen-bytecode'];
156+
final bool genBytecode = options['gen-bytecode'] ?? aot;
157157
final bool dropAST = options['drop-ast'];
158158
final bool enableAsserts = options['enable-asserts'];
159159
final bool useProtobufTreeShaker = options['protobuf-tree-shaker'];
@@ -166,10 +166,11 @@ Future<int> runCompiler(ArgResults options, String usage) async {
166166
}
167167

168168
final BytecodeOptions bytecodeOptions = new BytecodeOptions(
169-
enableAsserts: enableAsserts,
170-
emitSourceFiles: embedSources,
171-
environmentDefines: environmentDefines)
172-
..parseCommandLineFlags(options['bytecode-options']);
169+
enableAsserts: enableAsserts,
170+
emitSourceFiles: embedSources,
171+
environmentDefines: environmentDefines,
172+
aot: aot,
173+
)..parseCommandLineFlags(options['bytecode-options']);
173174

174175
final target = createFrontEndTarget(targetName);
175176
if (target == null) {

pkg/vm/tool/precompiler2

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ for arg in "$@"; do
3131
;;
3232
--tfa | \
3333
--no-tfa | \
34+
--gen-bytecode | \
35+
--no-gen-bytecode | \
3436
-D* )
3537
GEN_KERNEL_OPTIONS+=("$arg")
3638
;;

runtime/vm/compiler/jit/compiler.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ static void PrecompilationModeHandler(bool value) {
108108
FLAG_reorder_basic_blocks = true;
109109
FLAG_use_field_guards = false;
110110
FLAG_use_cha_deopt = false;
111+
FLAG_use_bytecode_compiler = true;
111112

112113
#if !defined(DART_PRECOMPILED_RUNTIME)
113114
// Not present with DART_PRECOMPILED_RUNTIME

0 commit comments

Comments
 (0)