Changeset 228491 in webkit


Ignore:
Timestamp:
Feb 14, 2018 3:31:50 PM (6 years ago)
Author:
msaboff@apple.com
Message:

Crash: triggerOMGTierUpThunkGenerator() doesn't align the stack pointer before calling C++ code
https://bugs.webkit.org/show_bug.cgi?id=182808

Reviewed by Keith Miller.

Set up a proper frame with a prologue and epilogue to align the stack pointer for the rest of the
thunk.

  • wasm/WasmThunks.cpp:

(JSC::Wasm::triggerOMGTierUpThunkGenerator):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r228488 r228491  
     12018-02-14  Michael Saboff  <msaboff@apple.com>
     2
     3        Crash: triggerOMGTierUpThunkGenerator() doesn't align the stack pointer before calling C++ code
     4        https://bugs.webkit.org/show_bug.cgi?id=182808
     5
     6        Reviewed by Keith Miller.
     7
     8        Set up a proper frame with a prologue and epilogue to align the stack pointer for the rest of the
     9        thunk.
     10
     11        * wasm/WasmThunks.cpp:
     12        (JSC::Wasm::triggerOMGTierUpThunkGenerator):
     13
    1142018-02-14  Saam Barati  <sbarati@apple.com>
    215
  • trunk/Source/JavaScriptCore/wasm/WasmThunks.cpp

    r225411 r228491  
    8282    CCallHelpers jit;
    8383
     84    jit.emitFunctionPrologue();
     85
    8486    const unsigned extraPaddingBytes = 0;
    8587    RegisterSet registersToSpill = RegisterSet::allRegisters();
    8688    registersToSpill.exclude(RegisterSet::registersToNotSaveForCCall());
    87 #if CPU(ARM64)
    88     // We also want to spill x30 since that holds our return pc.
    89     registersToSpill.set(ARM64Registers::x30);
    90 #endif
    9189    unsigned numberOfStackBytesUsedForRegisterPreservation = ScratchRegisterAllocator::preserveRegistersToStackForCall(jit, registersToSpill, extraPaddingBytes);
    9290
     
    9997    ScratchRegisterAllocator::restoreRegistersFromStackForCall(jit, registersToSpill, RegisterSet(), numberOfStackBytesUsedForRegisterPreservation, extraPaddingBytes);
    10098
     99    jit.emitFunctionEpilogue();
    101100    jit.ret();
    102101    LinkBuffer linkBuffer(jit, GLOBAL_THUNK_ID);
Note: See TracChangeset for help on using the changeset viewer.