mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 00:13:50 +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;
|
||||
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);
|
||||
|
|
Loading…
Reference in a new issue