⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 199052 in webkit


Ignore:
Timestamp:
Apr 4, 2016, 11:30:02 PM (11 years ago)
Author:
zandobersek@gmail.com
Message:

Add missing EABI_32BIT_DUMMY_ARG arguments for some callOperation(J_JITOperation_EGReoJ, ...) overloads
​https://bugs.webkit.org/show_bug.cgi?id=156161

Reviewed by Yusuke Suzuki.

r197641 added a couple of callOperation(J_JITOperation_EGReoJ, ...) overloads
that handle arguments split into the tag and the payload. The two were split
between the last argument register and the stack on 32-bit ARM EABI systems,
causing incorrect behavior.

Adding EABI_32BIT_DUMMY_ARG pushes the tag and payload together onto the
stack, removing the issue.

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r199035 r199052  
     12016-04-04  Zan Dobersek  <zdobersek@igalia.com>
     2
     3        Add missing EABI_32BIT_DUMMY_ARG arguments for some callOperation(J_JITOperation_EGReoJ, ...) overloads
     4        https://bugs.webkit.org/show_bug.cgi?id=156161
     5
     6        Reviewed by Yusuke Suzuki.
     7
     8        r197641 added a couple of callOperation(J_JITOperation_EGReoJ, ...) overloads
     9        that handle arguments split into the tag and the payload. The two were split
     10        between the last argument register and the stack on 32-bit ARM EABI systems,
     11        causing incorrect behavior.
     12
     13        Adding EABI_32BIT_DUMMY_ARG pushes the tag and payload together onto the
     14        stack, removing the issue.
     15
     16        * dfg/DFGSpeculativeJIT.h:
     17        (JSC::DFG::SpeculativeJIT::callOperation):
     18
    1192016-04-04  Joseph Pecoraro  <pecoraro@apple.com>
    220
  • trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h

    r198981 r199052  
    17401740    JITCompiler::Call callOperation(J_JITOperation_EGReoJ operation, GPRReg resultTag, GPRReg resultPayload, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
    17411741    {
    1742         m_jit.setupArgumentsWithExecState(arg1, arg2, arg3Payload, arg3Tag);
     1742        m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
    17431743        return appendCallSetResult(operation, resultPayload, resultTag);
    17441744    }
    … …  
    18521852    JITCompiler::Call callOperation(S_JITOperation_EGReoJ operation, GPRReg result, GPRReg arg1, GPRReg arg2, GPRReg arg3Tag, GPRReg arg3Payload)
    18531853    {
    1854         m_jit.setupArgumentsWithExecState(arg1, arg2, arg3Payload, arg3Tag);
     1854        m_jit.setupArgumentsWithExecState(arg1, arg2, EABI_32BIT_DUMMY_ARG arg3Payload, arg3Tag);
    18551855        return appendCallSetResult(operation, result);
    18561856    }
Note: See TracChangeset for help on using the changeset viewer.