Changeset 166266 in webkit


Ignore:
Timestamp:
Mar 25, 2014 4:28:48 PM (10 years ago)
Author:
fpizlo@apple.com
Message:

Fix 32-bit getter call alignment.

Reviewed by Mark Hahnenberg.

  • jit/Repatch.cpp:

(JSC::generateGetByIdStub):

Location:
trunk/Source/JavaScriptCore
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r166263 r166266  
     12014-03-25  Filip Pizlo  <fpizlo@apple.com>
     2
     3        Fix 32-bit getter call alignment.
     4
     5        Reviewed by Mark Hahnenberg.
     6
     7        * jit/Repatch.cpp:
     8        (JSC::generateGetByIdStub):
     9
    1102014-03-25  Filip Pizlo  <fpizlo@apple.com>
    211
  • trunk/Source/JavaScriptCore/jit/Repatch.cpp

    r166263 r166266  
    341341            //   code.
    342342            //
    343             // Therefore, we temporary grow the stack for the purpose of the call and then
    344             // degrow it after.
     343            // Therefore, we temporarily grow the stack for the purpose of the call and then
     344            // shrink it after.
    345345           
    346346            callLinkInfo = std::make_unique<CallLinkInfo>();
     
    364364                JSStack::CallFrameHeaderSize + numberOfParameters;
    365365           
    366             unsigned alignedNumberOfNeededRegs =
    367                 WTF::roundUpToMultipleOf(stackAlignmentRegisters(), numberOfRegsForCall);
    368            
    369             unsigned alignedNumberOfNeededBytes =
    370                 alignedNumberOfNeededRegs * sizeof(Register);
     366            unsigned numberOfBytesForCall =
     367                numberOfRegsForCall * sizeof(Register) - sizeof(CallerFrameAndPC);
     368           
     369            unsigned alignedNumberOfBytesForCall =
     370                WTF::roundUpToMultipleOf(stackAlignmentBytes(), numberOfBytesForCall);
    371371           
    372372            stubJit.subPtr(
    373                 MacroAssembler::TrustedImm32(
    374                     alignedNumberOfNeededBytes - sizeof(CallerFrameAndPC)),
     373                MacroAssembler::TrustedImm32(alignedNumberOfBytesForCall),
    375374                MacroAssembler::stackPointerRegister);
    376375           
     
    405404           
    406405            stubJit.addPtr(
    407                 MacroAssembler::TrustedImm32(
    408                     alignedNumberOfNeededBytes - sizeof(CallerFrameAndPC)),
     406                MacroAssembler::TrustedImm32(alignedNumberOfBytesForCall),
    409407                MacroAssembler::stackPointerRegister);
    410408           
     
    420418           
    421419            stubJit.addPtr(
    422                 MacroAssembler::TrustedImm32(
    423                     alignedNumberOfNeededBytes - sizeof(CallerFrameAndPC)),
     420                MacroAssembler::TrustedImm32(alignedNumberOfBytesForCall),
    424421                MacroAssembler::stackPointerRegister);
    425422           
Note: See TracChangeset for help on using the changeset viewer.