Changeset 148790 in webkit for trunk/Source/JavaScriptCore/jit


Ignore:
Timestamp:
Apr 20, 2013, 3:27:33 AM (12 years ago)
Author:
[email protected]
Message:

LLint should be able to use x87 instead of SSE for floating pointer
https://bugs.webkit.org/show_bug.cgi?id=112239

Reviewed by Filip Pizlo.

Source/JavaScriptCore:

Implements LLInt floating point operations in x87, to ensure we support
x86 without SSE2.

X86 (except 64bit) now defaults to using x87 instructions in order to
support all 32bit x86 back to i686. The implementation uses the fucomi
instruction from i686 which sets the new minimum.

The FPU registers must always be empty on entering or exiting a function.
We make sure to only use two X87 registers, and they are always emptied
before calling deeper functions or returning from the LLInt.

  • jit/JITStubs.cpp:

(JSC): Empty FPU registers before exiting.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • offlineasm/instructions.rb:
  • offlineasm/x86.rb:

Source/WTF:

Disable GTK workaround now that LLInt does not require SSE2.

  • wtf/Platform.h:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/jit/JITStubs.cpp

    r148696 r148790  
    100100    "pushl %ebx" "\n"
    101101    "subl $0x3c, %esp" "\n"
     102    "movw $0x02FF, %bx" "\n"
     103    "movw %bx, 0(%esp)" "\n"
     104    "fldcw 0(%esp)" "\n"
    102105    "movl 0x58(%esp), %edi" "\n"
    103106    "call *0x50(%esp)" "\n"
     
    107110    "popl %esi" "\n"
    108111    "popl %ebp" "\n"
     112    "ffree %st(1)" "\n"
    109113    "ret" "\n"
    110114".globl " SYMBOL_STRING(ctiTrampolineEnd) "\n"
Note: See TracChangeset for help on using the changeset viewer.