2011-07-01 Sheriff Bot <webkit.review.bot@gmail.com>
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Jul 2011 07:47:55 +0000 (07:47 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 1 Jul 2011 07:47:55 +0000 (07:47 +0000)
        Unreviewed, rolling out r90177 and r90179.
        http://trac.webkit.org/changeset/90177
        http://trac.webkit.org/changeset/90179
        https://bugs.webkit.org/show_bug.cgi?id=63790

        It caused crashes on Qt in debug mode (Requested by Ossy on
        #webkit).

        * assembler/MacroAssemblerARM.h:
        (JSC::MacroAssemblerARM::rshift32):
        (JSC::MacroAssemblerARM::supportsFloatingPointSqrt):
        (JSC::MacroAssemblerARM::sqrtDouble):
        * assembler/MacroAssemblerARMv7.h:
        (JSC::MacroAssemblerARMv7::supportsFloatingPointSqrt):
        (JSC::MacroAssemblerARMv7::sqrtDouble):
        * assembler/MacroAssemblerMIPS.h:
        (JSC::MacroAssemblerMIPS::sqrtDouble):
        (JSC::MacroAssemblerMIPS::supportsFloatingPointSqrt):
        * assembler/MacroAssemblerSH4.h:
        (JSC::MacroAssemblerSH4::sqrtDouble):
        * assembler/MacroAssemblerX86.h:
        * assembler/MacroAssemblerX86Common.h:
        * assembler/MacroAssemblerX86_64.h:
        * assembler/X86Assembler.h:
        * create_hash_table:
        * jit/JSInterfaceJIT.h:
        (JSC::JSInterfaceJIT::emitLoadDouble):
        * jit/SpecializedThunkJIT.h:
        (JSC::SpecializedThunkJIT::finalize):
        * jit/ThunkGenerators.cpp:
        * jit/ThunkGenerators.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@90215 268f45cc-cd09-0410-ab3c-d52691b4dbfc

14 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/assembler/MacroAssemblerARM.h
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h
Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h
Source/JavaScriptCore/assembler/MacroAssemblerSH4.h
Source/JavaScriptCore/assembler/MacroAssemblerX86.h
Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
Source/JavaScriptCore/assembler/X86Assembler.h
Source/JavaScriptCore/create_hash_table
Source/JavaScriptCore/jit/JSInterfaceJIT.h
Source/JavaScriptCore/jit/SpecializedThunkJIT.h
Source/JavaScriptCore/jit/ThunkGenerators.cpp
Source/JavaScriptCore/jit/ThunkGenerators.h

index 377cc82..8966ed2 100644 (file)
@@ -1,3 +1,37 @@
+2011-07-01  Sheriff Bot  <webkit.review.bot@gmail.com>
+
+        Unreviewed, rolling out r90177 and r90179.
+        http://trac.webkit.org/changeset/90177
+        http://trac.webkit.org/changeset/90179
+        https://bugs.webkit.org/show_bug.cgi?id=63790
+
+        It caused crashes on Qt in debug mode (Requested by Ossy on
+        #webkit).
+
+        * assembler/MacroAssemblerARM.h:
+        (JSC::MacroAssemblerARM::rshift32):
+        (JSC::MacroAssemblerARM::supportsFloatingPointSqrt):
+        (JSC::MacroAssemblerARM::sqrtDouble):
+        * assembler/MacroAssemblerARMv7.h:
+        (JSC::MacroAssemblerARMv7::supportsFloatingPointSqrt):
+        (JSC::MacroAssemblerARMv7::sqrtDouble):
+        * assembler/MacroAssemblerMIPS.h:
+        (JSC::MacroAssemblerMIPS::sqrtDouble):
+        (JSC::MacroAssemblerMIPS::supportsFloatingPointSqrt):
+        * assembler/MacroAssemblerSH4.h:
+        (JSC::MacroAssemblerSH4::sqrtDouble):
+        * assembler/MacroAssemblerX86.h:
+        * assembler/MacroAssemblerX86Common.h:
+        * assembler/MacroAssemblerX86_64.h:
+        * assembler/X86Assembler.h:
+        * create_hash_table:
+        * jit/JSInterfaceJIT.h:
+        (JSC::JSInterfaceJIT::emitLoadDouble):
+        * jit/SpecializedThunkJIT.h:
+        (JSC::SpecializedThunkJIT::finalize):
+        * jit/ThunkGenerators.cpp:
+        * jit/ThunkGenerators.h:
+
 2011-06-30  Oliver Hunt  <oliver@apple.com>
 
         Reviewed by Beth Dakin.
index 7210ac2..6d8479f 100644 (file)
@@ -179,15 +179,10 @@ public:
 
         m_assembler.movs_r(dest, m_assembler.asr_r(dest, ARMRegisters::S0));
     }
-    
-    void rshift32(TrustedImm32 imm, RegisterID dest)
-    {
-        rshift32(dest, imm, dest);
-    }
 
-    void rshift32(RegisterID src, TrustedImm32 imm, RegisterID dest)
+    void rshift32(TrustedImm32 imm, RegisterID dest)
     {
-        m_assembler.movs_r(dest, m_assembler.asr(src, imm.m_value & 0x1f));
+        m_assembler.movs_r(dest, m_assembler.asr(dest, imm.m_value & 0x1f));
     }
     
     void urshift32(RegisterID shift_amount, RegisterID dest)
@@ -794,7 +789,6 @@ public:
     {
         return s_isVFPPresent;
     }
-    bool supportsDoubleBitops() const { return false; }
 
     void loadDouble(ImplicitAddress address, FPRegisterID dest)
     {
@@ -861,11 +855,6 @@ public:
     {
         m_assembler.vsqrt_f64_r(dest, src);
     }
-    
-    void andnotDouble(FPRegisterID, FPRegisterID)
-    {
-        ASSERT_NOT_REACHED();
-    }
 
     void convertInt32ToDouble(RegisterID src, FPRegisterID dest)
     {
index e14fb8c..f4ccfc4 100644 (file)
@@ -567,7 +567,6 @@ public:
     {
         return false;
     }
-    bool supportsDoubleBitops() const { return false; }
 
     void loadDouble(ImplicitAddress address, FPRegisterID dest)
     {
@@ -647,11 +646,6 @@ public:
     {
         ASSERT_NOT_REACHED();
     }
-    
-    void andnotDouble(FPRegisterID, FPRegisterID)
-    {
-        ASSERT_NOT_REACHED();
-    }
 
     void convertInt32ToDouble(RegisterID src, FPRegisterID dest)
     {
index 936a069..a590504 100644 (file)
@@ -460,11 +460,6 @@ public:
     {
         m_assembler.sqrtd(dst, src);
     }
-    
-    void andnotDouble(FPRegisterID, FPRegisterID)
-    {
-        ASSERT_NOT_REACHED();
-    }
 
     // Memory access operations:
     //
@@ -821,7 +816,6 @@ public:
         return false;
 #endif
     }
-    bool supportsDoubleBitops() const { return false; }
 
     // Stack manipulation operations:
     //
index 4585a5d..a09480d 100644 (file)
@@ -762,7 +762,6 @@ public:
     bool supportsFloatingPoint() const { return true; }
     bool supportsFloatingPointTruncate() const { return true; }
     bool supportsFloatingPointSqrt() const { return true; }
-    bool supportsDoubleBitops() const { return false; }
 
     void loadDouble(ImplicitAddress address, FPRegisterID dest)
     {
@@ -1101,11 +1100,6 @@ public:
             m_assembler.dmovRegReg(src, dest);
         m_assembler.dsqrt(dest);
     }
-    
-    void andnotDouble(FPRegisterID, FPRegisterID)
-    {
-        ASSERT_NOT_REACHED();
-    }
 
     Jump branchTest8(ResultCondition cond, Address address, TrustedImm32 mask = TrustedImm32(-1))
     {
index 50f4d9c..ec24774 100644 (file)
@@ -166,7 +166,6 @@ public:
     // See comment on MacroAssemblerARMv7::supportsFloatingPointTruncate()
     bool supportsFloatingPointTruncate() const { return m_isSSE2Present; }
     bool supportsFloatingPointSqrt() const { return m_isSSE2Present; }
-    bool supportsDoubleBitops() const { return m_isSSE2Present; }
 
 private:
     const bool m_isSSE2Present;
index 05544d2..933b36b 100644 (file)
@@ -423,11 +423,6 @@ public:
         m_assembler.sqrtsd_rr(src, dst);
     }
 
-    void andnotDouble(FPRegisterID src, FPRegisterID dst)
-    {
-        m_assembler.andnpd_rr(src, dst);
-    }
-
     // Memory access operations:
     //
     // Loads are of the form load(address, destination) and stores of the form
index bde6ecc..e2a20cb 100644 (file)
@@ -456,7 +456,6 @@ public:
     // See comment on MacroAssemblerARMv7::supportsFloatingPointTruncate()
     bool supportsFloatingPointTruncate() const { return true; }
     bool supportsFloatingPointSqrt() const { return true; }
-    bool supportsDoubleBitops() const { return true; }
 
 private:
     friend class LinkBuffer;
index c06a131..14df006 100644 (file)
@@ -170,7 +170,6 @@ private:
         OP2_SUBSD_VsdWsd    = 0x5C,
         OP2_DIVSD_VsdWsd    = 0x5E,
         OP2_SQRTSD_VsdWsd   = 0x51,
-        OP2_ANDNPD_VpdWpd   = 0x55,
         OP2_XORPD_VpdWpd    = 0x57,
         OP2_MOVD_VdEd       = 0x6E,
         OP2_MOVD_EdVd       = 0x7E,
@@ -1458,12 +1457,6 @@ public:
         m_formatter.twoByteOp(OP2_XORPD_VpdWpd, (RegisterID)dst, (RegisterID)src);
     }
 
-    void andnpd_rr(XMMRegisterID src, XMMRegisterID dst)
-    {
-        m_formatter.prefix(PRE_SSE_66);
-        m_formatter.twoByteOp(OP2_ANDNPD_VpdWpd, (RegisterID)dst, (RegisterID)src);
-    }
-
     void sqrtsd_rr(XMMRegisterID src, XMMRegisterID dst)
     {
         m_formatter.prefix(PRE_SSE_F2);
index 1397f7e..59b574a 100755 (executable)
@@ -278,35 +278,15 @@ sub output() {
         if ($key eq "charAt") {
             $thunkGenerator = "charAtThunkGenerator";
         }
+        if ($key eq "sqrt") {
+            $thunkGenerator = "sqrtThunkGenerator";
+        }
+        if ($key eq "pow") {
+            $thunkGenerator = "powThunkGenerator";
+        }
         if ($key eq "fromCharCode") {
             $thunkGenerator = "fromCharCodeThunkGenerator";
         }
-        if ($name eq "mathTable") {
-            if ($key eq "sqrt") {
-                $thunkGenerator = "sqrtThunkGenerator";
-            }
-            if ($key eq "pow") {
-                $thunkGenerator = "powThunkGenerator";
-            }
-            if ($key eq "abs") {
-                $thunkGenerator = "absThunkGenerator";
-            }
-            if ($key eq "floor") {
-                $thunkGenerator = "floorThunkGenerator";
-            }
-            if ($key eq "ceil") {
-                $thunkGenerator = "ceilThunkGenerator";
-            }
-            if ($key eq "round") {
-                $thunkGenerator = "roundThunkGenerator";
-            }
-            if ($key eq "exp") {
-                $thunkGenerator = "expThunkGenerator";
-            }
-            if ($key eq "log") {
-                $thunkGenerator = "logThunkGenerator";
-            }
-        }
         print "   { \"$key\", $attrs[$i], (intptr_t)" . $castStr . "($firstValue), (intptr_t)$secondValue THUNK_GENERATOR($thunkGenerator) },\n";
         $i++;
     }
index 4aa9d42..feaf467 100644 (file)
@@ -271,8 +271,7 @@ namespace JSC {
         loadDouble(addressFor(virtualRegisterIndex), dst);
         done.link(this);
         return notInt;
-    }
-
+    }    
 #endif
 
 #if USE(JSVALUE64)
@@ -311,7 +310,7 @@ namespace JSC {
         done.link(this);
         return notNumber;
     }
-
+    
     ALWAYS_INLINE void JSInterfaceJIT::emitFastArithImmToInt(RegisterID)
     {
     }
index 09d94cb..13a5c2e 100644 (file)
@@ -127,18 +127,9 @@ namespace JSC {
         {
             LinkBuffer patchBuffer(globalData, this, m_pool.get());
             patchBuffer.link(m_failures, CodeLocationLabel(fallback));
-            for (unsigned i = 0; i < m_calls.size(); i++)
-                patchBuffer.link(m_calls[i].first, m_calls[i].second);
             return patchBuffer.finalizeCode().m_code;
         }
-
-        // Assumes that the target function uses fpRegister0 as the first argument
-        // and return value. Like any sensible architecture would.
-        void callDoubleToDouble(FunctionPtr function)
-        {
-            m_calls.append(std::make_pair(call(), function));
-        }
-
+        
     private:
         int argumentToVirtualRegister(unsigned argument)
         {
@@ -165,7 +156,6 @@ namespace JSC {
         JSGlobalData* m_globalData;
         RefPtr<ExecutablePool> m_pool;
         MacroAssembler::JumpList m_failures;
-        Vector<std::pair<Call, FunctionPtr> > m_calls;
     };
 
 }
index d5aed38..d60fd4d 100644 (file)
@@ -102,195 +102,8 @@ MacroAssemblerCodePtr sqrtThunkGenerator(JSGlobalData* globalData, ExecutablePoo
     return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
 }
 
-#if OS(DARWIN) || (OS(WINDOWS) && CPU(X86))
-#define SYMBOL_STRING(name) "_" #name
-#else
-#define SYMBOL_STRING(name) #name
-#endif
-    
-#if (OS(LINUX) || OS(FREEBSD)) && CPU(X86_64)
-#define SYMBOL_STRING_RELOCATION(name) #name "@plt"
-#elif OS(DARWIN) || (CPU(X86_64) && COMPILER(MINGW) && !GCC_VERSION_AT_LEAST(4, 5, 0))
-#define SYMBOL_STRING_RELOCATION(name) "_" #name
-#elif CPU(X86) && COMPILER(MINGW)
-#define SYMBOL_STRING_RELOCATION(name) "@" #name "@4"
-#else
-#define SYMBOL_STRING_RELOCATION(name) #name
-#endif
-
-#define UnaryDoubleOpWrapper(function) function##Wrapper
-enum MathThunkCallingConvention { };
-typedef MathThunkCallingConvention(*MathThunk)(MathThunkCallingConvention);
-extern "C" {
-
-double jsRound(double);
-double jsRound(double d)
-{
-    double integer = ceil(d);
-    return integer - (integer - d > 0.5);
-}
-
-}
-    
-#if CPU(X86_64) && COMPILER(GCC)
-
-#define defineUnaryDoubleOpWrapper(function) \
-    asm( \
-        ".globl " SYMBOL_STRING(function##Thunk) "\n" \
-        SYMBOL_STRING(function##Thunk) ":" "\n" \
-        "call " SYMBOL_STRING_RELOCATION(function) "\n" \
-        "ret\n" \
-    );\
-    extern "C" { \
-        MathThunkCallingConvention function##Thunk(MathThunkCallingConvention); \
-    } \
-    static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
-
-#elif CPU(X86) && COMPILER(GCC)
-#define defineUnaryDoubleOpWrapper(function) \
-    asm( \
-         ".globl " SYMBOL_STRING(function##Thunk) "\n" \
-         SYMBOL_STRING(function##Thunk) ":" "\n" \
-         "subl $8, %esp\n" \
-         "movsd %xmm0, (%esp) \n" \
-         "call " SYMBOL_STRING_RELOCATION(function) "\n" \
-         "fstpl (%esp) \n" \
-         "movsd (%esp), %xmm0 \n" \
-         "addl $8, %esp\n" \
-         "ret\n" \
-    );\
-    extern "C" { \
-        MathThunkCallingConvention function##Thunk(MathThunkCallingConvention); \
-    } \
-    static MathThunk UnaryDoubleOpWrapper(function) = &function##Thunk;
-
-#else
-
-#define defineUnaryDoubleOpWrapper(function) \
-    static MathThunk UnaryDoubleOpWrapper(function) = 0
-#endif
-
-defineUnaryDoubleOpWrapper(jsRound);
-defineUnaryDoubleOpWrapper(exp);
-defineUnaryDoubleOpWrapper(log);
-defineUnaryDoubleOpWrapper(floor);
-defineUnaryDoubleOpWrapper(ceil);
-
-MacroAssemblerCodePtr floorThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
-{
-    SpecializedThunkJIT jit(1, globalData, pool);
-    MacroAssembler::Jump nonIntJump;
-    jit.loadInt32Argument(0, SpecializedThunkJIT::regT0, nonIntJump);
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    if (!UnaryDoubleOpWrapper(floor) || !jit.supportsFloatingPoint()) {
-        jit.appendFailure(nonIntJump);
-        return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-    }
-    nonIntJump.link(&jit);
-    jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
-    jit.callDoubleToDouble(UnaryDoubleOpWrapper(floor));
-    SpecializedThunkJIT::JumpList doubleResult;
-    jit.branchConvertDoubleToInt32(SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0, doubleResult, SpecializedThunkJIT::fpRegT1);
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    doubleResult.link(&jit);
-    jit.returnDouble(SpecializedThunkJIT::fpRegT0);
-    return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-}
-
-MacroAssemblerCodePtr ceilThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
-{
-    SpecializedThunkJIT jit(1, globalData, pool);
-    MacroAssembler::Jump nonIntJump;
-    jit.loadInt32Argument(0, SpecializedThunkJIT::regT0, nonIntJump);
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    if (!UnaryDoubleOpWrapper(ceil) || !jit.supportsFloatingPoint()) {
-        jit.appendFailure(nonIntJump);
-        return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-    }
-    nonIntJump.link(&jit);
-    jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
-    jit.callDoubleToDouble(UnaryDoubleOpWrapper(ceil));
-    SpecializedThunkJIT::JumpList doubleResult;
-    jit.branchConvertDoubleToInt32(SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0, doubleResult, SpecializedThunkJIT::fpRegT1);
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    doubleResult.link(&jit);
-    jit.returnDouble(SpecializedThunkJIT::fpRegT0);
-    return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-}
-
-static const double negativeZeroConstant = -0.0;
 static const double oneConstant = 1.0;
 static const double negativeHalfConstant = -0.5;
-    
-MacroAssemblerCodePtr roundThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
-{
-    SpecializedThunkJIT jit(1, globalData, pool);
-    MacroAssembler::Jump nonIntJump;
-    jit.loadInt32Argument(0, SpecializedThunkJIT::regT0, nonIntJump);
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    if (!UnaryDoubleOpWrapper(jsRound) || !jit.supportsFloatingPoint()) {
-        jit.appendFailure(nonIntJump);
-        return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-    }
-    nonIntJump.link(&jit);
-    jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
-    jit.callDoubleToDouble(UnaryDoubleOpWrapper(jsRound));
-    SpecializedThunkJIT::JumpList doubleResult;
-    jit.branchConvertDoubleToInt32(SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0, doubleResult, SpecializedThunkJIT::fpRegT1);
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    doubleResult.link(&jit);
-    jit.returnDouble(SpecializedThunkJIT::fpRegT0);
-    return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-}
-
-MacroAssemblerCodePtr expThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
-{
-    if (!UnaryDoubleOpWrapper(exp))
-        return globalData->jitStubs->ctiNativeCall();
-    SpecializedThunkJIT jit(1, globalData, pool);
-    if (!jit.supportsFloatingPoint())
-        return globalData->jitStubs->ctiNativeCall();
-    jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
-    jit.callDoubleToDouble(UnaryDoubleOpWrapper(exp));
-    jit.returnDouble(SpecializedThunkJIT::fpRegT0);
-    return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-}
-
-MacroAssemblerCodePtr logThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
-{
-    if (!UnaryDoubleOpWrapper(log))
-        return globalData->jitStubs->ctiNativeCall();
-    SpecializedThunkJIT jit(1, globalData, pool);
-    if (!jit.supportsFloatingPoint())
-        return globalData->jitStubs->ctiNativeCall();
-    jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
-    jit.callDoubleToDouble(UnaryDoubleOpWrapper(log));
-    jit.returnDouble(SpecializedThunkJIT::fpRegT0);
-    return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-}
-
-MacroAssemblerCodePtr absThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
-{
-    SpecializedThunkJIT jit(1, globalData, pool);
-    MacroAssembler::Jump nonIntJump;
-    jit.loadInt32Argument(0, SpecializedThunkJIT::regT0, nonIntJump);
-    jit.rshift32(SpecializedThunkJIT::regT0, MacroAssembler::TrustedImm32(31), SpecializedThunkJIT::regT1);
-    jit.add32(SpecializedThunkJIT::regT1, SpecializedThunkJIT::regT0);
-    jit.xor32(SpecializedThunkJIT::regT1, SpecializedThunkJIT::regT0);
-    jit.appendFailure(jit.branch32(MacroAssembler::Equal, SpecializedThunkJIT::regT0, MacroAssembler::TrustedImm32(1 << 31)));
-    jit.returnInt32(SpecializedThunkJIT::regT0);
-    if (!jit.supportsDoubleBitops()) {
-        jit.appendFailure(nonIntJump);
-        return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-    }
-    nonIntJump.link(&jit);
-    // Shame about the double int conversion here.
-    jit.loadDouble(&negativeZeroConstant, SpecializedThunkJIT::fpRegT1);
-    jit.loadDoubleArgument(0, SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::regT0);
-    jit.andnotDouble(SpecializedThunkJIT::fpRegT0, SpecializedThunkJIT::fpRegT1);
-    jit.returnDouble(SpecializedThunkJIT::fpRegT1);
-    return jit.finalize(*globalData, globalData->jitStubs->ctiNativeCall());
-}
 
 MacroAssemblerCodePtr powThunkGenerator(JSGlobalData* globalData, ExecutablePool* pool)
 {
index 6a69ce2..15261f7 100644 (file)
@@ -37,12 +37,6 @@ namespace JSC {
     MacroAssemblerCodePtr charCodeAtThunkGenerator(JSGlobalData*, ExecutablePool*);
     MacroAssemblerCodePtr charAtThunkGenerator(JSGlobalData*, ExecutablePool*);
     MacroAssemblerCodePtr fromCharCodeThunkGenerator(JSGlobalData*, ExecutablePool*);
-    MacroAssemblerCodePtr absThunkGenerator(JSGlobalData*, ExecutablePool*);
-    MacroAssemblerCodePtr ceilThunkGenerator(JSGlobalData*, ExecutablePool*);
-    MacroAssemblerCodePtr expThunkGenerator(JSGlobalData*, ExecutablePool*);
-    MacroAssemblerCodePtr floorThunkGenerator(JSGlobalData*, ExecutablePool*);
-    MacroAssemblerCodePtr logThunkGenerator(JSGlobalData*, ExecutablePool*);
-    MacroAssemblerCodePtr roundThunkGenerator(JSGlobalData*, ExecutablePool*);
     MacroAssemblerCodePtr sqrtThunkGenerator(JSGlobalData*, ExecutablePool*);
     MacroAssemblerCodePtr powThunkGenerator(JSGlobalData*, ExecutablePool*);
 }