Skip to content

Commit 0400b4e

Browse files
rmacnak-googleCommit Queue
authored andcommitted
[vm, compiler] Fix LoadFieldInstr(Acquire) with compressed pointers.
TEST=ci Cq-Include-Trybots: luci.dart.try:vm-aot-android-release-arm64c-try,vm-linux-debug-x64c-try Change-Id: I454f5f3b1bcf94474d16f5384c6cbe4b8200870e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/442706 Reviewed-by: Alexander Aprelev <[email protected]> Commit-Queue: Ryan Macnak <[email protected]>
1 parent 527e86e commit 0400b4e

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

runtime/vm/compiler/assembler/assembler_base.cc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ void AssemblerBase::LoadFromSlot(Register dst,
6060
} else {
6161
if (slot.is_compressed()) {
6262
if (memory_order == kAcquire) {
63-
LoadAcquireCompressedFromOffset(dst, base, slot.offset_in_bytes());
63+
LoadAcquireCompressedFieldFromOffset(dst, base, slot.offset_in_bytes());
6464
} else {
6565
LoadCompressedFieldFromOffset(dst, base, slot.offset_in_bytes());
6666
}
@@ -186,6 +186,11 @@ void AssemblerBase::LoadAcquireCompressedFromOffset(Register dst,
186186
int32_t offset) {
187187
LoadAcquireCompressed(dst, Address(base, offset));
188188
}
189+
void AssemblerBase::LoadAcquireCompressedFieldFromOffset(Register dst,
190+
Register base,
191+
int32_t offset) {
192+
LoadAcquireCompressed(dst, FieldAddress(base, offset));
193+
}
189194
void AssemblerBase::LoadCompressedField(Register dst,
190195
const FieldAddress& address) {
191196
LoadCompressed(dst, address);

runtime/vm/compiler/assembler/assembler_base.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,6 +1060,9 @@ class AssemblerBase : public StackResource {
10601060
void LoadAcquireCompressedFromOffset(Register dst,
10611061
Register base,
10621062
int32_t offset);
1063+
void LoadAcquireCompressedFieldFromOffset(Register dst,
1064+
Register base,
1065+
int32_t offset);
10631066
void LoadCompressedField(Register dst, const FieldAddress& address);
10641067
void LoadCompressedFromOffset(Register dst, Register base, int32_t offset);
10651068
void LoadCompressedFieldFromOffset(Register dst,

0 commit comments

Comments
 (0)