On Tue, Nov 10, 2020 at 07:50:26AM +0100, Charlene Wendling wrote:
> Hi,
> 
> The below diff brings two fixes, and are exclusive to powerpc, with
> no impact on other archs. 
> 
> > Fix javascript runtime
> 
> It appears that a Void-PPC developer managed to fix JavascriptCore
> crashes [1]. There are a lot of 'ifs' and 'buts' in the bug report but
> it fixes that problem nonetheless. That's why i'm keeping it only on
> powerpc, and as-is so it can be synced with their patch.
> 
> > Fix colors
> 
> Then i had these funny colors [2]. It appears that disabling context
> GL (only on powerpc) helps. While building, i had to do a second patch
> to fix a missing header. I've reduced the size of the haystack about
> this issue, but i may not be able to fix the code myself, which is sad
> since it impacts performances. Yet this provides a better user experience
> indeed.
> 
> With that fixed, i'm now able to browse as seen on amd64 with my
> PowerBook using midori [3] and surf.
> 
> To potential testers, note that media playback may not work due to
> missing gstreamer plugins either because they're not marked as depends,
> or some of them requiring pulseaudio -- that means rust. If you have
> freezes or panics with a radeon video card you'll need a kernel with
> that commit in [4].
> 
> Comments/feedback are welcome,

OK aja with 1 nitpick below.


> Charlène.
> 
> 
> [1] https://bugs.webkit.org/show_bug.cgi?id=211592
> [2] https://bsd.network/web/statuses/105180314092646514
> [3] https://bsd.network/web/statuses/105182198093311767
> [4] https://marc.info/?l=openbsd-cvs&m=160496603105486&w=2
> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/www/webkitgtk4/Makefile,v
> retrieving revision 1.129
> diff -u -p -u -p -r1.129 Makefile
> --- Makefile  24 Oct 2020 09:22:18 -0000      1.129
> +++ Makefile  10 Nov 2020 06:45:11 -0000
> @@ -14,6 +14,7 @@ PORTROACH =         limitw:1,even
>  COMMENT =            GTK+ port of the WebKit rendering engine
>  
>  V =                  2.30.2
> +REVISION =           0
>  DISTNAME =           webkitgtk-${V}
>  PKGNAME =            webkitgtk4-${V}
>  EXTRACT_SUFX =               .tar.xz
> @@ -116,9 +117,12 @@ LDFLAGS +=               -Wl,--no-keep-memory
>  .endif
>  
>  .if ${MACHINE_ARCH} == "powerpc"
> +# XXX fix colors being off, it would be nice to fix the code
> +CONFIGURE_ARGS +=    -DENABLE_GRAPHICS_CONTEXT_GL=OFF
>  CFLAGS +=            -mlongcall
>  CXXFLAGS +=          -mlongcall
>  LDFLAGS +=           -Wl,--relax
> +PATCH_LIST =         patch-* patch_powerpc-*

Could you name it 
powerpc-patch-Source_JavaScriptCore_llint_LowLevelInterpreter32_64_asm

>  .endif
>  
>  post-extract:
> Index: 
> patches/patch_powerpc-Source_JavaScriptCore_llint_LowLevelInterpreter32_64_asm
> ===================================================================
> RCS file: 
> patches/patch_powerpc-Source_JavaScriptCore_llint_LowLevelInterpreter32_64_asm
> diff -N 
> patches/patch_powerpc-Source_JavaScriptCore_llint_LowLevelInterpreter32_64_asm
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 
> patches/patch_powerpc-Source_JavaScriptCore_llint_LowLevelInterpreter32_64_asm
>     10 Nov 2020 06:45:11 -0000
> @@ -0,0 +1,58 @@
> +$OpenBSD$
> +
> +Fix Javascript runtime on powerpc, from
> +https://bugs.webkit.org/show_bug.cgi?id=211592
> +
> +Index: Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
> +--- Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm.orig
> ++++ Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
> +@@ -1552,13 +1552,21 @@ llintOpWithMetadata(op_put_by_id, OpPutById, macro 
> (si
> +     loadp StructureChain::m_vector[t3], t3
> +     assert(macro (ok) btpnz t3, ok end)
> + 
> +-    loadp Structure::m_prototype[t2], t2
> ++    if JSVALUE64
> ++        loadp Structure::m_prototype[t2], t2
> ++    else
> ++        loadp Structure::m_prototype + PayloadOffset[t2], t2
> ++    end
> +     btpz t2, .opPutByIdTransitionChainDone
> + .opPutByIdTransitionChainLoop:
> +     loadp [t3], t1
> +     bineq t1, JSCell::m_structureID[t2], .opPutByIdSlow
> +     addp 4, t3
> +-    loadp Structure::m_prototype[t1], t2
> ++    if JSVALUE64
> ++        loadp Structure::m_prototype[t1], t2
> ++    else
> ++        loadp Structure::m_prototype + PayloadOffset[t1], t2
> ++    end
> +     btpnz t2, .opPutByIdTransitionChainLoop
> + 
> + .opPutByIdTransitionChainDone:
> +@@ -2182,7 +2190,11 @@ end)
> + 
> + 
> + op(llint_throw_from_slow_path_trampoline, macro()
> +-    loadp Callee[cfr], t1
> ++    if JSVALUE64
> ++        loadp Callee[cfr], t1
> ++    else
> ++        loadp Callee + PayloadOffset[cfr], t1
> ++    end
> +     convertCalleeToVM(t1)
> +     copyCalleeSavesToVMEntryFrameCalleeSavesBuffer(t1, t2)
> + 
> +@@ -2191,7 +2203,11 @@ op(llint_throw_from_slow_path_trampoline, macro()
> +     # When throwing from the interpreter (i.e. throwing from 
> LLIntSlowPaths), so
> +     # the throw target is not necessarily interpreted code, we come to here.
> +     # This essentially emulates the JIT's throwing protocol.
> +-    loadp Callee[cfr], t1
> ++    if JSVALUE64
> ++        loadp Callee[cfr], t1
> ++    else
> ++        loadp Callee + PayloadOffset[cfr], t1
> ++    end
> +     convertCalleeToVM(t1)
> +     jmp VM::targetMachinePCForThrow[t1]
> + end)
> Index: 
> patches/patch_powerpc-Source_WebCore_platform_graphics_x11_PlatformDisplayX11_cpp
> ===================================================================
> RCS file: 
> patches/patch_powerpc-Source_WebCore_platform_graphics_x11_PlatformDisplayX11_cpp
> diff -N 
> patches/patch_powerpc-Source_WebCore_platform_graphics_x11_PlatformDisplayX11_cpp
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ 
> patches/patch_powerpc-Source_WebCore_platform_graphics_x11_PlatformDisplayX11_cpp
>  10 Nov 2020 06:45:11 -0000
> @@ -0,0 +1,17 @@
> +$OpenBSD$
> +
> +Missing include for XVisualInfo(3), this code is only trigerred when
> +`-DENABLE_GRAPHICS_CONTEXT_GL=OFF' is given to CONFIGURE_ARGS, currently
> +only needed on powerpc.
> +
> +Index: Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
> +--- Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp.orig
> ++++ Source/WebCore/platform/graphics/x11/PlatformDisplayX11.cpp
> +@@ -32,6 +32,7 @@
> + #include <X11/Xlib.h>
> + #include <X11/extensions/Xcomposite.h>
> + #if PLATFORM(GTK)
> ++#include <X11/Xutil.h>
> + #include <X11/extensions/Xdamage.h>
> + #endif
> + 
> 
> 

-- 
Antoine

Reply via email to