Changeset 158926 in webkit


Ignore:
Timestamp:
Nov 8, 2013 10:25:52 AM (10 years ago)
Author:
commit-queue@webkit.org
Message:

REGRESSION(r158883): Fix crashes for ARM architecture.
https://bugs.webkit.org/show_bug.cgi?id=124038

Patch by Julien Brianceau <jbriance@cisco.com> on 2013-11-08
Reviewed by Michael Saboff.

  • jit/GPRInfo.h: Remove r11 from the temporary register set, use a free register for

nonPreservedNonReturnGPR and remove obsolete declaration of bucketCounterRegister.
(JSC::GPRInfo::toRegister):
(JSC::GPRInfo::toIndex):

  • jit/JITOperations.cpp: Frame pointer register is r11 for ARM_TRADITIONAL and

r7 for ARM_THUMB2 instead of r5 since r158883.

Location:
trunk/Source/JavaScriptCore
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r158925 r158926  
     12013-11-08  Julien Brianceau  <jbriance@cisco.com>
     2
     3        REGRESSION(r158883): Fix crashes for ARM architecture.
     4        https://bugs.webkit.org/show_bug.cgi?id=124038
     5
     6        Reviewed by Michael Saboff.
     7
     8        * jit/GPRInfo.h: Remove r11 from the temporary register set, use a free register for
     9        nonPreservedNonReturnGPR and remove obsolete declaration of bucketCounterRegister.
     10        (JSC::GPRInfo::toRegister):
     11        (JSC::GPRInfo::toIndex):
     12        * jit/JITOperations.cpp: Frame pointer register is r11 for ARM_TRADITIONAL and
     13        r7 for ARM_THUMB2 instead of r5 since r158883.
     14
    1152013-11-08  Julien Brianceau  <jbriance@cisco.com>
    216
  • trunk/Source/JavaScriptCore/jit/GPRInfo.h

    r158915 r158926  
    452452public:
    453453    typedef GPRReg RegisterType;
    454     static const unsigned numberOfRegisters = 10;
     454    static const unsigned numberOfRegisters = 9;
    455455    static const unsigned numberOfArgumentRegisters = NUMBER_OF_ARGUMENT_REGISTERS;
    456456
     
    465465    static const GPRReg regT5 = ARMRegisters::r9;
    466466    static const GPRReg regT6 = ARMRegisters::r10;
    467     static const GPRReg regT7 = ARMRegisters::r11;
     467    static const GPRReg regT7 = ARMRegisters::r5;
    468468    static const GPRReg regT8 = ARMRegisters::r3;
    469     static const GPRReg regT9 = ARMRegisters::r5;
    470469    // These registers match the baseline JIT.
    471470    static const GPRReg cachedResultRegister = regT0;
     
    482481    static const GPRReg returnValueGPR = ARMRegisters::r0; // regT0
    483482    static const GPRReg returnValueGPR2 = ARMRegisters::r1; // regT1
    484     static const GPRReg nonPreservedNonReturnGPR = ARMRegisters::r2;
    485 
    486 #if ENABLE(VALUE_PROFILER)
    487     static const GPRReg bucketCounterRegister = ARMRegisters::r7;
    488 #endif
     483    static const GPRReg nonPreservedNonReturnGPR = ARMRegisters::r5; // regT7
    489484
    490485    static GPRReg toRegister(unsigned index)
    491486    {
    492487        ASSERT(index < numberOfRegisters);
    493         static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5, regT6, regT7, regT8, regT9 };
     488        static const GPRReg registerForIndex[numberOfRegisters] = { regT0, regT1, regT2, regT3, regT4, regT5, regT6, regT7, regT8 };
    494489        return registerForIndex[index];
    495490    }
     
    499494        ASSERT(reg != InvalidGPRReg);
    500495        ASSERT(reg < 16);
    501         static const unsigned indexForRegister[16] = { 0, 1, 2, 8, 3, 9, InvalidIndex, InvalidIndex, 4, 5, 6, 7, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex };
     496        static const unsigned indexForRegister[16] = { 0, 1, 2, 8, 3, 7, InvalidIndex, InvalidIndex, 4, 5, 6, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex, InvalidIndex };
    502497        unsigned result = indexForRegister[reg];
    503498        ASSERT(result != InvalidIndex);
  • trunk/Source/JavaScriptCore/jit/JITOperations.cpp

    r158925 r158926  
    17431743".thumb_func " THUMB_FUNC_PARAM(getHostCallReturnValue) "\n"
    17441744SYMBOL_STRING(getHostCallReturnValue) ":" "\n"
    1745     "ldr r5, [r5, #0]" "\n" // CallerFrameAndPC::callerFrame
    1746     "mov r0, r5" "\n"
     1745    "ldr r7, [r7, #0]" "\n" // CallerFrameAndPC::callerFrame
     1746    "mov r0, r7" "\n"
    17471747    "b " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n"
    17481748);
     
    17551755INLINE_ARM_FUNCTION(getHostCallReturnValue)
    17561756SYMBOL_STRING(getHostCallReturnValue) ":" "\n"
    1757     "ldr r5, [r5, #0]" "\n" // CallerFrameAndPC::callerFrame
    1758     "mov r0, r5" "\n"
     1757    "ldr r11, [r11, #0]" "\n" // CallerFrameAndPC::callerFrame
     1758    "mov r0, r11" "\n"
    17591759    "b " LOCAL_REFERENCE(getHostCallReturnValueWithExecState) "\n"
    17601760);
Note: See TracChangeset for help on using the changeset viewer.