Hi,

this fixes the webkitgtk4 build on riscv64.

ok?


Index: Makefile
===================================================================
RCS file: /cvs/ports/www/webkitgtk4/Makefile,v
diff -u -p -r1.211 Makefile
--- Makefile    13 Apr 2024 09:37:30 -0000      1.211
+++ Makefile    14 Apr 2024 11:03:42 -0000
@@ -16,6 +16,7 @@ V =                   2.44.1
 DISTNAME =             webkitgtk-${V}
 PKGNAME =              webkitgtk${API:S/.//}-${V}
 FULLPKGNAME =          ${PKGNAME}
+REVISION =             0
 
 EXTRACT_SUFX =         .tar.xz
 SUBST_VARS =           API
@@ -119,6 +120,13 @@ CONFIGURE_ARGS +=  -DENABLE_GAMEPAD=OFF
 # #error "The MacroAssembler is not supported on this platform."
 CONFIGURE_ARGS +=      -DENABLE_JIT=OFF
 CONFIGURE_ARGS +=      -DENABLE_C_LOOP=ON
+.endif
+
+.if ${MACHINE_ARCH} == riscv64
+# WEBASSEMBLY and FTL_JIT need at least one of OMGJIT/BBQJIT
+# check Source/WTF/wtf/PlatformEnable.h
+CONFIGURE_ARGS +=      -DENABLE_WEBASSEMBLY=OFF
+CONFIGURE_ARGS +=      -DENABLE_FTL_JIT=OFF
 .endif
 
 # we don't want an allocation of 1GB, it's above the "default" class ulimit
Index: patches/patch-Source_JavaScriptCore_llint_LowLevelInterpreter64_asm
===================================================================
RCS file: patches/patch-Source_JavaScriptCore_llint_LowLevelInterpreter64_asm
diff -N patches/patch-Source_JavaScriptCore_llint_LowLevelInterpreter64_asm
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-Source_JavaScriptCore_llint_LowLevelInterpreter64_asm 15 Apr 
2024 11:01:30 -0000
@@ -0,0 +1,67 @@
+Partial revert of https://commits.webkit.org/270649@main
+To avoid _llint_throw_stack_overflow_error_from_vm_entry being out of reach
+from its call sites (issue visible on riscv64) we turn it into a local label
+nested inside the macro that uses it.  Said macro is used only twice anyway.
+
+Error message:
+-->8--
+<inline asm>:24:1: error: fixup value out of range
+bleu sp, x13, .Lllint_throw_stack_overflow_error_from_vm_entry 
+^
+<inline asm>:26:1: error: fixup value out of range
+bltu x13, x31, .Lllint_throw_stack_overflow_error_from_vm_entry 
+^
+<inline asm>:108:1: error: fixup value out of range
+bleu sp, x13, .Lllint_throw_stack_overflow_error_from_vm_entry 
+^
+<inline asm>:110:1: error: fixup value out of range
+bltu x13, x31, .Lllint_throw_stack_overflow_error_from_vm_entry 
+^
+1 warning and 4 errors generated.
+--8<--
+
+Index: Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+--- Source/JavaScriptCore/llint/LowLevelInterpreter64.asm.orig
++++ Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+@@ -255,7 +255,7 @@ macro doVMEntry(makeCall)
+     addp CallFrameHeaderSlots, t4, t4
+     lshiftp 3, t4
+     subp sp, t4, t3
+-    bqbeq sp, t3, _llint_throw_stack_overflow_error_from_vm_entry
++    bqbeq sp, t3, .llint_throw_stack_overflow_error_from_vm_entry
+ 
+     # Ensure that we have enough additional stack capacity for the incoming 
args,
+     # and the frame for the JS code we're executing. We need to do this check
+@@ -273,11 +273,11 @@ macro doVMEntry(makeCall)
+ .stackCheckFailed:
+         move t4, entry
+         move t5, vm
+-        jmp  _llint_throw_stack_overflow_error_from_vm_entry
++        jmp  .llint_throw_stack_overflow_error_from_vm_entry
+ .stackHeightOK:
+         move t3, sp
+     else
+-        bpb t3, VM::m_softStackLimit[vm],  
_llint_throw_stack_overflow_error_from_vm_entry
++        bpb t3, VM::m_softStackLimit[vm],  
.llint_throw_stack_overflow_error_from_vm_entry
+         move t3, sp
+     end
+ 
+@@ -362,9 +362,8 @@ macro doVMEntry(makeCall)
+     popCalleeSaves()
+     functionEpilogue()
+     ret
+-end
+ 
+-_llint_throw_stack_overflow_error_from_vm_entry:
++.llint_throw_stack_overflow_error_from_vm_entry:
+     const entry = a0
+     const vm = a1
+     const protoCallFrame = a2
+@@ -387,6 +386,7 @@ _llint_throw_stack_overflow_error_from_vm_entry:
+     popCalleeSaves()
+     functionEpilogue()
+     ret
++end
+ 
+ # a0, a2, t3, t4
+ macro makeJavaScriptCall(entry, protoCallFrame, temp1, temp2)

-- 
jca

Reply via email to