[maglev][arm64] Fix InterruptBudget IRs
Use a temporary for feedback cell, since if the `amount` is big enough, the macro instructions Add/Sub might need a temporary register as well. Bug: v8:7700 Change-Id: I2930f525ab3bf7d92fc1a47d9c483577c6186400 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4135889 Reviewed-by: Darius Mercadier <dmercadier@chromium.org> Commit-Queue: Darius Mercadier <dmercadier@chromium.org> Auto-Submit: Victor Gomes <victorgomes@chromium.org> Cr-Commit-Position: refs/heads/main@{#85096}
This commit is contained in:
parent
d201f32e50
commit
203d9c8cb6
@ -1679,11 +1679,13 @@ void GeneratorStore::GenerateCode(MaglevAssembler* masm,
|
||||
FieldMemOperand(generator, JSGeneratorObject::kInputOrDebugPosOffset));
|
||||
}
|
||||
|
||||
void IncreaseInterruptBudget::SetValueLocationConstraints() {}
|
||||
void IncreaseInterruptBudget::SetValueLocationConstraints() {
|
||||
set_temporaries_needed(1);
|
||||
}
|
||||
void IncreaseInterruptBudget::GenerateCode(MaglevAssembler* masm,
|
||||
const ProcessingState& state) {
|
||||
UseScratchRegisterScope temps(masm);
|
||||
Register feedback_cell = temps.AcquireX();
|
||||
Register feedback_cell = general_temporaries().PopFirst();
|
||||
Register budget = temps.AcquireW();
|
||||
__ Ldr(feedback_cell,
|
||||
MemOperand(fp, StandardFrameConstants::kFunctionOffset));
|
||||
@ -1698,12 +1700,14 @@ void IncreaseInterruptBudget::GenerateCode(MaglevAssembler* masm,
|
||||
}
|
||||
|
||||
int ReduceInterruptBudget::MaxCallStackArgs() const { return 1; }
|
||||
void ReduceInterruptBudget::SetValueLocationConstraints() {}
|
||||
void ReduceInterruptBudget::SetValueLocationConstraints() {
|
||||
set_temporaries_needed(1);
|
||||
}
|
||||
void ReduceInterruptBudget::GenerateCode(MaglevAssembler* masm,
|
||||
const ProcessingState& state) {
|
||||
{
|
||||
UseScratchRegisterScope temps(masm);
|
||||
Register feedback_cell = temps.AcquireX();
|
||||
Register feedback_cell = general_temporaries().PopFirst();
|
||||
Register budget = temps.AcquireW();
|
||||
__ Ldr(feedback_cell,
|
||||
MemOperand(fp, StandardFrameConstants::kFunctionOffset));
|
||||
|
Loading…
Reference in New Issue
Block a user