Skip to content

Commit a9665d0

Browse files
committed
contrib/nodejs: try fix riscv build
1 parent 00b8851 commit a9665d0

1 file changed

Lines changed: 145 additions & 0 deletions

File tree

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
From 13192d6e10fa726858056e49fc9bca6201401171 Mon Sep 17 00:00:00 2001
2+
From: Lu Yahan <yahan@iscas.ac.cn>
3+
Date: Tue, 5 Sep 2023 09:31:56 +0800
4+
Subject: [PATCH] [riscv][tagged-ptr] Convert more Objects to Tagged<>
5+
6+
Port commit 064b9a7903b793734b6c03a86ee53a2dc85f0f80
7+
8+
Bug: v8:12710
9+
10+
Change-Id: If076ca5cd9e9d175c20fc3611e03d39c0260404d
11+
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4837830
12+
Reviewed-by: Ji Qiu <qiuji@iscas.ac.cn>
13+
Commit-Queue: Ji Qiu <qiuji@iscas.ac.cn>
14+
Auto-Submit: Yahan Lu <yahan@iscas.ac.cn>
15+
Cr-Commit-Position: refs/heads/main@{#89780}
16+
---
17+
src/builtins/riscv/builtins-riscv.cc | 2 +-
18+
src/codegen/riscv/assembler-riscv-inl.h | 15 ++++++++-------
19+
src/codegen/riscv/assembler-riscv.h | 2 +-
20+
src/execution/riscv/simulator-riscv.cc | 8 ++++----
21+
src/regexp/riscv/regexp-macro-assembler-riscv.cc | 2 +-
22+
5 files changed, 15 insertions(+), 14 deletions(-)
23+
24+
diff --git a/src/builtins/riscv/builtins-riscv.cc b/src/builtins/riscv/builtins-riscv.cc
25+
index 326001fdd18..638001f9054 100644
26+
--- a/deps/v8/src/builtins/riscv/builtins-riscv.cc
27+
+++ b/deps/v8/src/builtins/riscv/builtins-riscv.cc
28+
@@ -1673,7 +1673,7 @@ static void Generate_InterpreterEnterBytecode(MacroAssembler* masm) {
29+
// Set the return address to the correct point in the interpreter entry
30+
// trampoline.
31+
Label builtin_trampoline, trampoline_loaded;
32+
- Smi interpreter_entry_return_pc_offset(
33+
+ Tagged<Smi> interpreter_entry_return_pc_offset(
34+
masm->isolate()->heap()->interpreter_entry_return_pc_offset());
35+
DCHECK_NE(interpreter_entry_return_pc_offset, Smi::zero());
36+
37+
diff --git a/src/codegen/riscv/assembler-riscv-inl.h b/src/codegen/riscv/assembler-riscv-inl.h
38+
index 773dc560da1..8abf4b3239f 100644
39+
--- a/deps/v8/src/codegen/riscv/assembler-riscv-inl.h
40+
+++ b/deps/v8/src/codegen/riscv/assembler-riscv-inl.h
41+
@@ -128,9 +128,9 @@ Handle<HeapObject> Assembler::compressed_embedded_object_handle_at(
42+
}
43+
44+
void Assembler::deserialization_set_special_target_at(
45+
- Address instruction_payload, Code code, Address target) {
46+
+ Address instruction_payload, Tagged<Code> code, Address target) {
47+
set_target_address_at(instruction_payload,
48+
- !code.is_null() ? code.constant_pool() : kNullAddress,
49+
+ !code.is_null() ? code->constant_pool() : kNullAddress,
50+
target);
51+
}
52+
53+
@@ -159,12 +159,13 @@ void Assembler::deserialization_set_target_internal_reference_at(
54+
}
55+
}
56+
57+
-HeapObject RelocInfo::target_object(PtrComprCageBase cage_base) {
58+
+Tagged<HeapObject> RelocInfo::target_object(PtrComprCageBase cage_base) {
59+
DCHECK(IsCodeTarget(rmode_) || IsEmbeddedObjectMode(rmode_));
60+
if (IsCompressedEmbeddedObject(rmode_)) {
61+
- return HeapObject::cast(Object(V8HeapCompressionScheme::DecompressTagged(
62+
- cage_base,
63+
- Assembler::target_compressed_address_at(pc_, constant_pool_))));
64+
+ return HeapObject::cast(
65+
+ Tagged<Object>(V8HeapCompressionScheme::DecompressTagged(
66+
+ cage_base,
67+
+ Assembler::target_compressed_address_at(pc_, constant_pool_))));
68+
} else {
69+
return HeapObject::cast(
70+
Object(Assembler::target_address_at(pc_, constant_pool_)));
71+
@@ -186,7 +187,7 @@ Handle<HeapObject> RelocInfo::target_object_handle(Assembler* origin) {
72+
}
73+
}
74+
75+
-void RelocInfo::set_target_object(HeapObject target,
76+
+void RelocInfo::set_target_object(Tagged<HeapObject> target,
77+
ICacheFlushMode icache_flush_mode) {
78+
DCHECK(IsCodeTarget(rmode_) || IsEmbeddedObjectMode(rmode_));
79+
if (IsCompressedEmbeddedObject(rmode_)) {
80+
diff --git a/src/codegen/riscv/assembler-riscv.h b/src/codegen/riscv/assembler-riscv.h
81+
index 65c317ad018..ced4dd8aee8 100644
82+
--- a/deps/v8/src/codegen/riscv/assembler-riscv.h
83+
+++ b/deps/v8/src/codegen/riscv/assembler-riscv.h
84+
@@ -288,7 +288,7 @@ class V8_EXPORT_PRIVATE Assembler : public AssemblerBase,
85+
// This is for calls and branches within generated code. The serializer
86+
// has already deserialized the lui/ori instructions etc.
87+
inline static void deserialization_set_special_target_at(Address location,
88+
- Code code,
89+
+ Tagged<Code> code,
90+
Address target);
91+
92+
// Get the size of the special target encoded at 'instruction_payload'.
93+
diff --git a/src/execution/riscv/simulator-riscv.cc b/src/execution/riscv/simulator-riscv.cc
94+
index 1baf9eb6c66..5b5411cb3e2 100644
95+
--- a/deps/v8/src/execution/riscv/simulator-riscv.cc
96+
+++ b/deps/v8/src/execution/riscv/simulator-riscv.cc
97+
@@ -1889,7 +1889,7 @@ void RiscvDebugger::Debug() {
98+
sreg_t value;
99+
StdoutStream os;
100+
if (GetValue(arg1, &value)) {
101+
- Object obj(value);
102+
+ Tagged<Object> obj(value);
103+
os << arg1 << ": \n";
104+
#ifdef DEBUG
105+
Print(obj, os);
106+
@@ -1938,7 +1938,7 @@ void RiscvDebugger::Debug() {
107+
PrintF(" 0x%012" PRIxPTR " : 0x%016" REGIx_FORMAT
108+
" %14" REGId_FORMAT " ",
109+
reinterpret_cast<intptr_t>(cur), *cur, *cur);
110+
- Object obj(*cur);
111+
+ Tagged<Object> obj(*cur);
112+
Heap* current_heap = sim_->isolate_->heap();
113+
if (IsSmi(obj) ||
114+
IsValidHeapObject(current_heap, HeapObject::cast(obj))) {
115+
@@ -4815,7 +4815,7 @@ bool Simulator::DecodeRvvVS() {
116+
Builtin Simulator::LookUp(Address pc) {
117+
for (Builtin builtin = Builtins::kFirst; builtin <= Builtins::kLast;
118+
++builtin) {
119+
- if (builtins_.code(builtin).contains(isolate_, pc)) return builtin;
120+
+ if (builtins_.code(builtin)->contains(isolate_, pc)) return builtin;
121+
}
122+
return Builtin::kNoBuiltinId;
123+
}
124+
@@ -4832,7 +4832,7 @@ void Simulator::DecodeRVIType() {
125+
if (builtin != Builtin::kNoBuiltinId) {
126+
auto code = builtins_.code(builtin);
127+
if ((rs1_reg() != ra || imm12() != 0)) {
128+
- if ((Address)get_pc() == code.instruction_start()) {
129+
+ if ((Address)get_pc() == code->instruction_start()) {
130+
sreg_t arg0 = get_register(a0);
131+
sreg_t arg1 = get_register(a1);
132+
sreg_t arg2 = get_register(a2);
133+
diff --git a/src/regexp/riscv/regexp-macro-assembler-riscv.cc b/src/regexp/riscv/regexp-macro-assembler-riscv.cc
134+
index 3b57e613eef..f60f03e5eee 100644
135+
--- a/deps/v8/src/regexp/riscv/regexp-macro-assembler-riscv.cc
136+
+++ b/deps/v8/src/regexp/riscv/regexp-macro-assembler-riscv.cc
137+
@@ -1216,7 +1216,7 @@ static T* frame_entry_address(Address re_frame, int frame_offset) {
138+
int64_t RegExpMacroAssemblerRISCV::CheckStackGuardState(Address* return_address,
139+
Address raw_code,
140+
Address re_frame) {
141+
- InstructionStream re_code = InstructionStream::cast(Object(raw_code));
142+
+ Tagged<InstructionStream> re_code = InstructionStream::cast(Object(raw_code));
143+
return NativeRegExpMacroAssembler::CheckStackGuardState(
144+
frame_entry<Isolate*>(re_frame, kIsolateOffset),
145+
static_cast<int>(frame_entry<int64_t>(re_frame, kStartIndexOffset)),

0 commit comments

Comments
 (0)