[sparkplug] Fix no-PC Smi writes

StoreTaggedSignedField wasn't clearing the lower bits of a
field when writing a 32-bit Smi

Bug: v8:11420
Change-Id: I543a35001ca8a78490de2d09539b72f52749b198
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2775571
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Auto-Submit: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#73546}
This commit is contained in:
Leszek Swirski 2021-03-19 16:24:33 +01:00 committed by Commit Bot
parent 20189856cd
commit 5edeaf2fe8

View File

@ -270,8 +270,8 @@ void TurboAssembler::StoreTaggedField(Operand dst_field_operand,
void TurboAssembler::StoreTaggedSignedField(Operand dst_field_operand,
Smi value) {
if (SmiValuesAre32Bits()) {
movl(Operand(dst_field_operand, kSmiShift / kBitsPerByte),
Immediate(value.value()));
Move(kScratchRegister, value);
movq(dst_field_operand, kScratchRegister);
} else {
StoreTaggedField(dst_field_operand, Immediate(value));
}