From d643bcf9c77afd39cd137a108142ed99def0299d Mon Sep 17 00:00:00 2001 From: Ryan Macnak Date: Mon, 3 Oct 2022 20:47:21 +0000 Subject: [PATCH] [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 Commit-Queue: Ryan Macnak --- runtime/vm/compiler/assembler/assembler_ia32.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc index 551b6c8ce22..6ef1b78c2cf 100644 --- a/runtime/vm/compiler/assembler/assembler_ia32.cc +++ b/runtime/vm/compiler/assembler/assembler_ia32.cc @@ -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);