Skip to content

Commit 4e0e197

Browse files
aamCommit Queue
authored andcommitted
[vm/shared] Fix StoreStaticField on x64, arm.
Follow-up to 6a377a4. BUG=#61025 TEST=ci Change-Id: Icf7082bb1a83f7578224d9145eee1473d671c52a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/440685 Reviewed-by: Alexander Markov <[email protected]> Commit-Queue: Alexander Aprelev <[email protected]>
1 parent ad50326 commit 4e0e197

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

runtime/vm/compiler/backend/il_arm.cc

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2957,8 +2957,14 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
29572957
: compiler::target::Thread::field_table_values_offset());
29582958

29592959
// Note: static fields ids won't be changed by hot-reload.
2960-
__ StoreToOffset(value, temp,
2961-
compiler::target::FieldTable::OffsetOf(field()));
2960+
if (field().is_shared()) {
2961+
__ StoreRelease(value,
2962+
compiler::Address(
2963+
temp, compiler::target::FieldTable::OffsetOf(field())));
2964+
} else {
2965+
__ StoreToOffset(value, temp,
2966+
compiler::target::FieldTable::OffsetOf(field()));
2967+
}
29622968
}
29632969

29642970
LocationSummary* InstanceOfInstr::MakeLocationSummary(Zone* zone,

runtime/vm/compiler/backend/il_x64.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2500,13 +2500,13 @@ void StoreStaticFieldInstr::EmitNativeCode(FlowGraphCompiler* compiler) {
25002500
: compiler::target::Thread::field_table_values_offset()));
25012501
// Note: static fields ids won't be changed by hot-reload.
25022502
if (field().is_shared()) {
2503-
__ movq(compiler::Address(temp,
2504-
compiler::target::FieldTable::OffsetOf(field())),
2505-
value);
2506-
} else {
25072503
__ StoreRelease(value,
25082504
compiler::Address(
25092505
temp, compiler::target::FieldTable::OffsetOf(field())));
2506+
} else {
2507+
__ movq(compiler::Address(temp,
2508+
compiler::target::FieldTable::OffsetOf(field())),
2509+
value);
25102510
}
25112511
}
25122512

0 commit comments

Comments
 (0)