-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[vm/compiler] Add all Compressed Assembler methods to AssemblerBase.
Remove CompareWithCompressedFieldFromOffset, which has no uses. Rename the LoadFromOffset and StoreFromOffset methods that took Addresses to Load and Store, respectively. This makes the names of the Assembler methods more uniform: * Takes an address: Load, Store, LoadField, LoadCompressedField, StoreIntoObject, StoreCompressedIntoObject, LoadSmi, LoadCompressedSmi, etc. * Takes a base register and an offset: LoadFromOffset, StoreToOffset, LoadFieldFromOffset, LoadCompressedFieldFromOffset, StoreIntoObjectOffset, StoreCompressedIntoObjectOffset, LoadSmiFromOffset, LoadCompressedSmiFromOffset, etc. Create AssemblerBase methods for loading and storing compressed pointers that weren't already there, as well as the corresponding methods for loading and storing uncompressed values. Make non-virtual methods that load and store uncompressed fields that call the corresponding method for loading from and storing to memory regions, adjusting the address or offset accordingly. This avoids needing per-architecture overrides for these. Make non-virtual methods that load compressed fields, calling the corresponding method for loading a compressed value from a memory region. (Since compressed pointers are only stored in Dart objects, and stores into a Dart object may require a barrier, there is no method for storing a compressed value into an arbitrary memory region.) Create pure virtual methods for loading from or storing to an Address or any method that does not have both an Address-taking and a base register and offset pair-taking version (e.g., LoadAcquire). Create methods for loading from or storing to a base register and an offset. The base implementation takes the base register and offset and creates an Address from it, then calls the Address-taking equivalent. These methods are non-virtual when the implementation is the same on all architectures and virtual to allow overriding when necessary. Make a non-virtual method for loading uncompressed Smis, since all architectures have the same code for this, including the DEBUG check. If compressed pointers are not being used, all the methods for compressed pointers are non-virtual methods that call the corresponding method for uncompressed values. If compressed pointers are being used: * Install pure virtual methods for loading compressed values from and storing compressed values to an Address or any method that does not have both an Address-taking and a base register and offset pair-taking version (e.g., LoadAcquireCompressed). * Install virtual methods for loading compressed values from and storing compressed values to a base register and offset. Like the uncompressed implementation, the base implementation of these create an Address and call the Address-taking equivalent, and these implementations are overridden on ARM64. * Install a non-virtual method for loading compressed Smis, since the only difference is that it loads a zero-extended 32-bit value, which AssemblerBase can do. TEST=ci (refactoring only) Change-Id: I934791d26a6e2cdaa6ac5f188b0fd89dbdc491d1 Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-aot-android-release-arm_x64-try,vm-aot-linux-debug-x64-try,vm-aot-linux-debug-x64c-try,vm-aot-mac-release-arm64-try,vm-aot-mac-release-x64-try,vm-aot-obfuscate-linux-release-x64-try,vm-aot-optimization-level-linux-release-x64-try,vm-aot-win-debug-arm64-try,vm-appjit-linux-debug-x64-try,vm-asan-linux-release-x64-try,vm-checked-mac-release-arm64-try,vm-eager-optimization-linux-release-ia32-try,vm-eager-optimization-linux-release-x64-try,vm-ffi-android-debug-arm-try,vm-ffi-android-debug-arm64c-try,vm-ffi-qemu-linux-release-arm-try,vm-ffi-qemu-linux-release-riscv64-try,vm-linux-debug-ia32-try,vm-linux-debug-x64c-try,vm-mac-debug-arm64-try,vm-mac-debug-x64-try,vm-msan-linux-release-x64-try,vm-reload-linux-debug-x64-try,vm-reload-rollback-linux-debug-x64-try,vm-ubsan-linux-release-x64-try,vm-win-debug-arm64-try,vm-win-debug-x64-try,vm-win-release-ia32-try Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/359861 Reviewed-by: Daco Harkes <[email protected]> Commit-Queue: Tess Strickland <[email protected]> Reviewed-by: Alexander Markov <[email protected]>
- Loading branch information
Showing
26 changed files
with
904 additions
and
991 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.