Skip to content

Commit 91ed534

Browse files
rmacnak-googlecommit-bot@chromium.org
authored andcommitted
[vm] Support --use_bare_instructions when splitting snapshots.
- Don't use PC-relative calls when calling between loading units. - Sort the contents of the code cluster by loading unit, then by text offset. - Handle binding PC-relatives calls and inserting trampolines per loading unit. - Create one code order table per loading unit to implement PC -> Code lookup. - Read code order tables directly, instead of copying into malloc'd memory. --use_table_dispatch still not yet supported. This slightly shrinks non-split binaries (~2% clustered part, 0.4% total snapshot) due to the new delta encoding when Code references Instructions. Bug: #41974 Change-Id: I51052ebc7b4968b554897d1710135a6c41821302 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/157820 Commit-Queue: Ryan Macnak <[email protected]> Reviewed-by: Alexander Markov <[email protected]> Reviewed-by: Tess Strickland <[email protected]>
1 parent 967181b commit 91ed534

30 files changed

+632
-645
lines changed

pkg/test_runner/lib/src/compiler_configuration.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,7 @@ class PrecompilerCompilerConfiguration extends CompilerConfiguration
716716
// mode.
717717
if (_configuration.useElf && arguments.last.contains("deferred")) ...[
718718
"--loading-unit-manifest=$tempDir/ignored.json",
719-
"--use-bare-instructions=false",
719+
"--use-table-dispatch=false",
720720
],
721721
if (_isAndroid && _isArm) '--no-sim-use-hardfp',
722722
if (_configuration.isMinified) '--obfuscate',

runtime/tests/vm/dart/incompatible_loading_unit_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ main(List<String> args) async {
6060
// Compile kernel to ELF.
6161
await run(genSnapshot, <String>[
6262
"--snapshot-kind=app-aot-elf",
63-
"--use-bare-instructions=false",
63+
"--use-table-dispatch=false",
6464
"--elf=$snapshot1",
6565
"--loading-unit-manifest=$manifest1",
6666
dill1,
@@ -71,7 +71,7 @@ main(List<String> args) async {
7171

7272
await run(genSnapshot, <String>[
7373
"--snapshot-kind=app-aot-elf",
74-
"--use-bare-instructions=false",
74+
"--use-table-dispatch=false",
7575
"--elf=$snapshot2",
7676
"--loading-unit-manifest=$manifest2",
7777
dill2,

runtime/tests/vm/dart_2/incompatible_loading_unit_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ main(List<String> args) async {
6060
// Compile kernel to ELF.
6161
await run(genSnapshot, <String>[
6262
"--snapshot-kind=app-aot-elf",
63-
"--use-bare-instructions=false",
63+
"--use-table-dispatch=false",
6464
"--elf=$snapshot1",
6565
"--loading-unit-manifest=$manifest1",
6666
dill1,
@@ -71,7 +71,7 @@ main(List<String> args) async {
7171

7272
await run(genSnapshot, <String>[
7373
"--snapshot-kind=app-aot-elf",
74-
"--use-bare-instructions=false",
74+
"--use-table-dispatch=false",
7575
"--elf=$snapshot2",
7676
"--loading-unit-manifest=$manifest2",
7777
dill2,

0 commit comments

Comments
 (0)