Bug 38993 - JIT fails on Windows x64
Summary: JIT fails on Windows x64
Status: UNCONFIRMED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows 7
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-12 08:25 PDT by vanboxem.ruben
Modified: 2011-07-20 06:12 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description vanboxem.ruben 2010-05-12 08:25:32 PDT
This is a follow-up to the ad interim fix in https://bugs.webkit.org/show_bug.cgi?id=38747. This bug report serves for the true fixing of JIT. JIT has been disabled for mingw-w64, but should be fixed somehow. It is a runtime crash when (I think) JIT is called in a program. The way I found the bug is opening a web page in the Qt browser demo or open a doc page in Assistant.

Building Qt 4.7 with mingw-w64: https://trac.webkit.org/wiki/BuildingQtOnWindows#AWorksForMeStep-by-StepGuidetobuildingQtWebKitonWindowsusingmingw-w64w32
(Use the drangon build or the sezero_old build, because there are issues with the _new build concerning underscoring in JavaScriptCore/jit/JITStubs.cpp)

PS: this bug should not block the release of 2.0 IMHO, this can be fixed later on.
PS2: if the howto doesn't work for you, please inform me.
Comment 1 Gabor Loki 2010-05-12 08:48:20 PDT
The Windows x64 uses different calling conventions and stack allocations. So, the cti*Trampolines have to be modified for Windows. I have a patch for this issue, but it should be tested on JS regression tests (at least).
Comment 2 vanboxem.ruben 2010-05-13 11:38:57 PDT
Sorry to be so passive on the providing patches side, but here's something on the issue:

Windows x64 does not provide underscores for symbol names, and recent mingw-w64 builds mirror that, and as a result (src/3rdparty/webkit/JavaScriptCore/jit/JITStubs.cpp):
namespace JSC
{
-#if OS(DARWIN) || OS(WINDOWS)
+#if OS(DARWIN) || (OS(WINDOWS) && !CPU(X86_64))
#define SYMBOL_STRING(name) "_" #name
#else
#define SYMBOL_STRING(name) #name
#endif

I don't know if it influences the runtime crashes, but this should be fixed for win64. This is also correct for MSVC (mingw-w64 devs assured me of that).
Comment 3 Jonathan Liu 2011-05-20 21:34:00 PDT
I can confirm this is still occurring with QtWebKit 2.2 branch (http://gitorious.org/+qtwebkit-developers/webkit/qtwebkit/trees/qtwebkit-2.2)  after applying patch from https://bugs.webkit.org/show_bug.cgi?id=61235. JIT seems to have been enabled for MinGW-w64. Perhaps it should be disabled again.
Comment 4 Jonathan Liu 2011-05-20 22:52:18 PDT
Disabling JIT on MinGW-w64 fixes the crash but JavaScript becomes unbearably slow. Acid3 Test takes a long time to run.
Comment 5 Jonathan Liu 2011-05-21 02:27:15 PDT
There is also lag in MinGW-w64 when middle-clicking to auto-scroll. It takes 1 second to change the cursor icon. Moving the cursor to auto-scroll the page is then also very slow. It updates, pauses for a second, updates, etc.
Comment 6 Benjamin Poulain 2011-05-21 03:23:15 PDT
I don't think any port of WebKit officially supports MinGW-w64.

Patches are welcome. But nobody is actively working on this.
Comment 7 vanboxem.ruben 2011-05-21 04:25:53 PDT
I don't think there's anything truly specific about mingw-w64. There's just no Windows x64 implementation as @Gabor Loki said.

By the way: how is that patch coming along, Mr. Gabor Loki?
Comment 8 Jonathan Liu 2011-05-21 04:52:45 PDT
Ruben, does the auto-scroll lag for you on MinGW-w64? What compiler do you use?
Comment 9 Gabor Loki 2011-05-23 02:45:26 PDT
Ohh, sorry. I just plain forgot this bug. If I have time, will look into it this or next week.
Comment 10 vanboxem.ruben 2011-05-23 02:53:21 PDT
I use only compilers on the mingw-w64 website, currently my own brew of GCC 4.6, native Windows x64:

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/rubenvb/

One directory level up, there's also a high quality build for GCC 4.5 and 4.4 by sezero, which I used before I got mine built.

I must admit I don't have the WebKit source tree on my PC anymore (I reported this bug a long time ago...). I'll be sure to test the fix once Mr. Loki has had a chance to work on it.
Comment 11 Jonathan Liu 2011-05-23 03:46:40 PDT
Ruben: if you have Qt compiled with MinGW-w64, can you check whether you can confirm https://bugs.webkit.org/show_bug.cgi?id=61239#c2?
Comment 12 Jonathan Liu 2011-07-20 06:12:51 PDT
(In reply to comment #9)
> Ohh, sorry. I just plain forgot this bug. If I have time, will look into it this or next week.

Any updates Gabor?