summaryrefslogtreecommitdiffstats
path: root/libs/wpewebkit/patches/158-JavaScriptCore-offlineasm-RISCV64-call-local-label.patch
blob: 62e49e88a3510191f8269555cfac5ac2f837bc01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
From 40b2bf5c5155b226eefe9dcdbb01e7005a60667b Mon Sep 17 00:00:00 2001
From: Daniel Golle <daniel@makrotopia.org>
Date: Thu, 24 Sep 2026 09:24:35 +0100
Subject: [PATCH] JavaScriptCore: allow RISCV64 call to a local label

LowLevelInterpreter.asm calls a local label, "call .continue", in the
validateVMEntryCalleeSaves path. The RISCV64 backend's emitCall accepts
only RegisterID and LabelReference, so offlineasm aborts with "Unable to
match operands [LocalLabelReference]" while generating LLIntAssembly.h.

emitJump already treats LabelReference and LocalLabelReference alike,
and the RISC-V call pseudo-instruction takes any label, so accept
LocalLabelReference in emitCall too.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
---
 Source/JavaScriptCore/offlineasm/riscv64.rb | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/Source/JavaScriptCore/offlineasm/riscv64.rb
+++ b/Source/JavaScriptCore/offlineasm/riscv64.rb
@@ -670,7 +670,7 @@ def riscv64LowerOperation(list)
         case riscv64OperandTypes(node.operands)
         when [RegisterID]
             callOpcode = "jalr"
-        when [LabelReference]
+        when [LabelReference], [LocalLabelReference]
             callOpcode = "call"
         else
             riscv64RaiseMismatchedOperands(node.operands)