[vm, compiler] Remove unnecessary spill from IA32 write barrier.

TEST=ci
Change-Id: Ie501566662f7460b53c0f5277a610c9dbeec9693
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/262273
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Ryan Macnak 2022-10-03 20:47:21 +00:00 committed by Commit Queue
parent da79baa962
commit d643bcf9c7

View file

@ -2057,14 +2057,14 @@ void Assembler::StoreIntoObject(Register object,
Label done;
StoreIntoObjectFilter(object, value, &done, can_be_smi, kJumpToNoUpdate);
// A store buffer update is required.
if (value != EDX) {
pushl(EDX); // Preserve EDX.
}
if (object != EDX) {
if (value != EDX) {
pushl(EDX); // Preserve EDX.
}
movl(EDX, object);
}
call(Address(THR, target::Thread::write_barrier_entry_point_offset()));
if (value != EDX) {
if ((object != EDX) && (value != EDX)) {
popl(EDX); // Restore EDX.
}
Bind(&done);