[maglev] Fix acquiring a double in a loop

Bug: v8:7700
Change-Id: I230f2dacf5a63e59a7644fb670540e28df200ed7
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4198151
Commit-Queue: Darius Mercadier <dmercadier@chromium.org>
Auto-Submit: Victor Gomes <victorgomes@chromium.org>
Commit-Queue: Victor Gomes <victorgomes@chromium.org>
Reviewed-by: Darius Mercadier <dmercadier@chromium.org>
Cr-Commit-Position: refs/heads/main@{#85520}
This commit is contained in:
Victor Gomes 2023-01-27 14:00:20 +01:00 committed by V8 LUCI CQ
parent a1ab842dbe
commit b9a0abd23e

View File

@ -982,6 +982,7 @@ void LoadPolymorphicTaggedField::GenerateCode(MaglevAssembler* masm,
Register result_reg = ToRegister(result());
Register object = ToRegister(object_input());
Register object_map = temps.Acquire();
DoubleRegister double_scratch = temps.AcquireDouble();
Label done;
Label is_number;
@ -1010,7 +1011,6 @@ void LoadPolymorphicTaggedField::GenerateCode(MaglevAssembler* masm,
case compiler::PropertyAccessInfo::kFastDataConstant: {
__ LoadDataField(access_info, result_reg, object, object_map);
if (access_info.field_index().is_double()) {
DoubleRegister double_scratch = temps.AcquireDouble();
__ LoadHeapNumberValue(double_scratch, result_reg);
__ AllocateHeapNumber(register_snapshot(), result_reg,
double_scratch);