s390x: [baseline] implement AddToInterruptBudgetAndJumpIfNotExceeded

Change-Id: I6af342589fc7a3e0661fe1e520e9d15725825678
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3417498
Reviewed-by: Milad Farazmand <mfarazma@redhat.com>
Commit-Queue: Junliang Yan <junyan@redhat.com>
Cr-Commit-Position: refs/heads/main@{#78788}
This commit is contained in:
Junliang Yan 2022-01-26 12:26:47 -05:00 committed by V8 LUCI CQ
parent fd122c4221
commit 011da951a4

View File

@ -488,7 +488,23 @@ void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded(
void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded(
Register weight, Label* skip_interrupt_label) {
UNIMPLEMENTED();
ASM_CODE_COMMENT(masm_);
ScratchRegisterScope scratch_scope(this);
Register feedback_cell = scratch_scope.AcquireScratch();
LoadFunction(feedback_cell);
LoadTaggedPointerField(feedback_cell, feedback_cell,
JSFunction::kFeedbackCellOffset);
Register interrupt_budget = scratch_scope.AcquireScratch();
__ LoadU32(
interrupt_budget,
FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
// Remember to set flags as part of the add!
__ AddU32(interrupt_budget, interrupt_budget, weight);
__ StoreU32(
interrupt_budget,
FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
if (skip_interrupt_label) __ b(ge, skip_interrupt_label);
}
void BaselineAssembler::AddSmi(Register lhs, Smi rhs) { UNIMPLEMENTED(); }