RESOLVED FIXED 137304
[Win] 32-bit JavaScriptCore should limit itself to the C loop
https://bugs.webkit.org/show_bug.cgi?id=137304
Summary [Win] 32-bit JavaScriptCore should limit itself to the C loop
Brent Fulgham
Reported 2014-10-01 10:29:54 PDT
The awesome LLInt interpreter layer in JSC uses SSE2 instructions that are not available in pre-Pentium 4. We need to continue supporting this old hardware as long as we are supporting Windows XP for WebKit. Consequently, we need to turn off LLInt on 32-bit Windows builds.
Attachments
Patch (3.02 KB, patch)
2014-10-01 10:41 PDT, Brent Fulgham
msaboff: review+
Brent Fulgham
Comment 1 2014-10-01 10:40:51 PDT
Brent Fulgham
Comment 2 2014-10-01 10:41:42 PDT
Michael Saboff
Comment 3 2014-10-01 10:42:49 PDT
Comment on attachment 239034 [details] Patch r=me
Brent Fulgham
Comment 4 2014-10-01 11:22:35 PDT
Brent Fulgham
Comment 5 2014-10-01 11:29:30 PDT
Confirmed no regressions in JSC test runs with this change.
peavo
Comment 6 2014-10-06 09:17:32 PDT
Do we know which SSE2 instructions are used? Maybe we could rewrite the usage of those?
Brent Fulgham
Comment 7 2014-10-06 09:41:48 PDT
(In reply to comment #6) > Do we know which SSE2 instructions are used? Maybe we could rewrite the usage of those? I believe the issue was the need to support IEEE floating point behavior. At one time, the Qt project had some code to use x86+math hacks to deliver similar support on non-SSE hardware, but that code probably got excised when they removed their port. Pragmatically, limiting JIT support to 64-bit is probably not the end of the world. Most people who care about performance are probably running 64-bit CPUs anyway. It would be great to re-enable the JIT for 32-bit in general, but people with specific performance needs can always build WebKit with the 32-bit JIT enabled for their own deployments.
peavo
Comment 8 2014-10-06 09:49:36 PDT
(In reply to comment #7) > (In reply to comment #6) > > Do we know which SSE2 instructions are used? Maybe we could rewrite the usage of those? > > I believe the issue was the need to support IEEE floating point behavior. At one time, the Qt project had some code to use x86+math hacks to deliver similar support on non-SSE hardware, but that code probably got excised when they removed their port. > > Pragmatically, limiting JIT support to 64-bit is probably not the end of the world. Most people who care about performance are probably running 64-bit CPUs anyway. It would be great to re-enable the JIT for 32-bit in general, but people with specific performance needs can always build WebKit with the 32-bit JIT enabled for their own deployments. Ok :) I also see that there are a number of ASSERT(isSSE2Present()) statements in MacroAssemblerX86Common.h which indicates where SSE2 is required.
Note You need to log in before you can comment on or make changes to this bug.