mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 22:19:49 +00:00
[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:
parent
da79baa962
commit
d643bcf9c7
|
@ -2057,14 +2057,14 @@ void Assembler::StoreIntoObject(Register object,
|
||||||
Label done;
|
Label done;
|
||||||
StoreIntoObjectFilter(object, value, &done, can_be_smi, kJumpToNoUpdate);
|
StoreIntoObjectFilter(object, value, &done, can_be_smi, kJumpToNoUpdate);
|
||||||
// A store buffer update is required.
|
// A store buffer update is required.
|
||||||
|
if (object != EDX) {
|
||||||
if (value != EDX) {
|
if (value != EDX) {
|
||||||
pushl(EDX); // Preserve EDX.
|
pushl(EDX); // Preserve EDX.
|
||||||
}
|
}
|
||||||
if (object != EDX) {
|
|
||||||
movl(EDX, object);
|
movl(EDX, object);
|
||||||
}
|
}
|
||||||
call(Address(THR, target::Thread::write_barrier_entry_point_offset()));
|
call(Address(THR, target::Thread::write_barrier_entry_point_offset()));
|
||||||
if (value != EDX) {
|
if ((object != EDX) && (value != EDX)) {
|
||||||
popl(EDX); // Restore EDX.
|
popl(EDX); // Restore EDX.
|
||||||
}
|
}
|
||||||
Bind(&done);
|
Bind(&done);
|
||||||
|
|
Loading…
Reference in a new issue