Commit e51739dd authored by Lu Yahan's avatar Lu Yahan Committed by V8 LUCI CQ

[riscv64] Fix relocation attribute not loaded correctly


And port commit 5ee6b7a7

Change-Id: Ia43d1d888154ebffcd56d436e6dfa8970eae6583
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3600174Reviewed-by: 's avatarji qiu <qiuji@iscas.ac.cn>
Commit-Queue: Yahan Lu <yahan@iscas.ac.cn>
Auto-Submit: Yahan Lu <yahan@iscas.ac.cn>
Cr-Commit-Position: refs/heads/main@{#80132}
parent ee1ee772
...@@ -110,7 +110,7 @@ void BaselineAssembler::JumpIfSmi(Register value, Label* target, ...@@ -110,7 +110,7 @@ void BaselineAssembler::JumpIfSmi(Register value, Label* target,
} }
void BaselineAssembler::JumpIfNotSmi(Register value, Label* target, void BaselineAssembler::JumpIfNotSmi(Register value, Label* target,
Label::Distance) { Label::Distance) {
__ JumpIfSmi(value, target); __ JumpIfNotSmi(value, target);
} }
void BaselineAssembler::JumpIfImmediate(Condition cc, Register left, int right, void BaselineAssembler::JumpIfImmediate(Condition cc, Register left, int right,
Label* target, Label* target,
...@@ -399,7 +399,7 @@ void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded( ...@@ -399,7 +399,7 @@ void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded(
FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset)); FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
if (skip_interrupt_label) { if (skip_interrupt_label) {
DCHECK_LT(weight, 0); DCHECK_LT(weight, 0);
__ Branch(skip_interrupt_label, ge, interrupt_budget, Operand(weight)); __ Branch(skip_interrupt_label, ge, interrupt_budget, Operand(zero_reg));
} }
} }
...@@ -420,7 +420,7 @@ void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded( ...@@ -420,7 +420,7 @@ void BaselineAssembler::AddToInterruptBudgetAndJumpIfNotExceeded(
__ Sw(interrupt_budget, __ Sw(interrupt_budget,
FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset)); FieldMemOperand(feedback_cell, FeedbackCell::kInterruptBudgetOffset));
if (skip_interrupt_label) if (skip_interrupt_label)
__ Branch(skip_interrupt_label, ge, interrupt_budget, Operand(weight)); __ Branch(skip_interrupt_label, ge, interrupt_budget, Operand(zero_reg));
} }
void BaselineAssembler::AddSmi(Register lhs, Smi rhs) { void BaselineAssembler::AddSmi(Register lhs, Smi rhs) {
......
...@@ -400,7 +400,7 @@ void TurboAssembler::Add64(Register rd, Register rs, const Operand& rt) { ...@@ -400,7 +400,7 @@ void TurboAssembler::Add64(Register rd, Register rs, const Operand& rt) {
UseScratchRegisterScope temps(this); UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire(); Register scratch = temps.Acquire();
BlockTrampolinePoolScope block_trampoline_pool(this); BlockTrampolinePoolScope block_trampoline_pool(this);
Li(scratch, rt.immediate()); li(scratch, rt);
add(rd, rs, scratch); add(rd, rs, scratch);
} }
} }
...@@ -485,13 +485,13 @@ void TurboAssembler::Sub64(Register rd, Register rs, const Operand& rt) { ...@@ -485,13 +485,13 @@ void TurboAssembler::Sub64(Register rd, Register rs, const Operand& rt) {
DCHECK(rt.immediate() != std::numeric_limits<int32_t>::min()); DCHECK(rt.immediate() != std::numeric_limits<int32_t>::min());
UseScratchRegisterScope temps(this); UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire(); Register scratch = temps.Acquire();
Li(scratch, -rt.immediate()); li(scratch, Operand(-rt.immediate()));
add(rd, rs, scratch); add(rd, rs, scratch);
} else { } else {
// li handles the relocation. // li handles the relocation.
UseScratchRegisterScope temps(this); UseScratchRegisterScope temps(this);
Register scratch = temps.Acquire(); Register scratch = temps.Acquire();
Li(scratch, rt.immediate()); li(scratch, rt);
sub(rd, rs, scratch); sub(rd, rs, scratch);
} }
} }
......
...@@ -156,13 +156,13 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerRISCV ...@@ -156,13 +156,13 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerRISCV
// Register holding the current input position as negative offset from // Register holding the current input position as negative offset from
// the end of the string. // the end of the string.
static constexpr Register current_input_offset() { return s1; } static constexpr Register current_input_offset() { return s2; }
// The register containing the current character after LoadCurrentCharacter. // The register containing the current character after LoadCurrentCharacter.
static constexpr Register current_character() { return s2; } static constexpr Register current_character() { return s5; }
// Register holding address of the end of the input string. // Register holding address of the end of the input string.
static constexpr Register end_of_input_address() { return t2; } static constexpr Register end_of_input_address() { return s6; }
// Register holding the frame address. Local variables, parameters and // Register holding the frame address. Local variables, parameters and
// regexp registers are addressed relative to this. // regexp registers are addressed relative to this.
...@@ -170,10 +170,10 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerRISCV ...@@ -170,10 +170,10 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerRISCV
// The register containing the backtrack stack top. Provides a meaningful // The register containing the backtrack stack top. Provides a meaningful
// name to the register. // name to the register.
static constexpr Register backtrack_stackpointer() { return t0; } static constexpr Register backtrack_stackpointer() { return s7; }
// Register holding pointer to the current code object. // Register holding pointer to the current code object.
static constexpr Register code_pointer() { return s4; } static constexpr Register code_pointer() { return s1; }
// Byte size of chars in the string to match (decided by the Mode argument). // Byte size of chars in the string to match (decided by the Mode argument).
inline int char_size() const { return static_cast<int>(mode_); } inline int char_size() const { return static_cast<int>(mode_); }
...@@ -200,8 +200,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerRISCV ...@@ -200,8 +200,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerRISCV
void LoadRegExpStackPointerFromMemory(Register dst); void LoadRegExpStackPointerFromMemory(Register dst);
void StoreRegExpStackPointerToMemory(Register src, Register scratch); void StoreRegExpStackPointerToMemory(Register src, Register scratch);
void PushRegExpBasePointer(Register scratch1, Register scratch2); void PushRegExpBasePointer(Register stack_pointer, Register scratch);
void PopRegExpBasePointer(Register scratch1, Register scratch2); void PopRegExpBasePointer(Register stack_pointer_out, Register scratch);
Isolate* isolate() const { return masm_->isolate(); } Isolate* isolate() const { return masm_->isolate(); }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment