Title: [166266] trunk/Source/_javascript_Core
- Revision
- 166266
- Author
- fpi...@apple.com
- Date
- 2014-03-25 16:28:48 -0700 (Tue, 25 Mar 2014)
Log Message
Fix 32-bit getter call alignment.
Reviewed by Mark Hahnenberg.
* jit/Repatch.cpp:
(JSC::generateGetByIdStub):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (166265 => 166266)
--- trunk/Source/_javascript_Core/ChangeLog 2014-03-25 23:20:14 UTC (rev 166265)
+++ trunk/Source/_javascript_Core/ChangeLog 2014-03-25 23:28:48 UTC (rev 166266)
@@ -1,5 +1,14 @@
2014-03-25 Filip Pizlo <fpi...@apple.com>
+ Fix 32-bit getter call alignment.
+
+ Reviewed by Mark Hahnenberg.
+
+ * jit/Repatch.cpp:
+ (JSC::generateGetByIdStub):
+
+2014-03-25 Filip Pizlo <fpi...@apple.com>
+
Repatch should plant calls to getters directly rather than through a C helper
https://bugs.webkit.org/show_bug.cgi?id=129589
Modified: trunk/Source/_javascript_Core/jit/Repatch.cpp (166265 => 166266)
--- trunk/Source/_javascript_Core/jit/Repatch.cpp 2014-03-25 23:20:14 UTC (rev 166265)
+++ trunk/Source/_javascript_Core/jit/Repatch.cpp 2014-03-25 23:28:48 UTC (rev 166266)
@@ -340,8 +340,8 @@
// - Any byte between FP (exclusive) and SP (inclusive) could be live in the calling
// code.
//
- // Therefore, we temporary grow the stack for the purpose of the call and then
- // degrow it after.
+ // Therefore, we temporarily grow the stack for the purpose of the call and then
+ // shrink it after.
callLinkInfo = std::make_unique<CallLinkInfo>();
callLinkInfo->callType = CallLinkInfo::Call;
@@ -363,15 +363,14 @@
unsigned numberOfRegsForCall =
JSStack::CallFrameHeaderSize + numberOfParameters;
- unsigned alignedNumberOfNeededRegs =
- WTF::roundUpToMultipleOf(stackAlignmentRegisters(), numberOfRegsForCall);
+ unsigned numberOfBytesForCall =
+ numberOfRegsForCall * sizeof(Register) - sizeof(CallerFrameAndPC);
- unsigned alignedNumberOfNeededBytes =
- alignedNumberOfNeededRegs * sizeof(Register);
+ unsigned alignedNumberOfBytesForCall =
+ WTF::roundUpToMultipleOf(stackAlignmentBytes(), numberOfBytesForCall);
stubJit.subPtr(
- MacroAssembler::TrustedImm32(
- alignedNumberOfNeededBytes - sizeof(CallerFrameAndPC)),
+ MacroAssembler::TrustedImm32(alignedNumberOfBytesForCall),
MacroAssembler::stackPointerRegister);
MacroAssembler::Address calleeFrame = MacroAssembler::Address(
@@ -404,8 +403,7 @@
fastPathCall = stubJit.nearCall();
stubJit.addPtr(
- MacroAssembler::TrustedImm32(
- alignedNumberOfNeededBytes - sizeof(CallerFrameAndPC)),
+ MacroAssembler::TrustedImm32(alignedNumberOfBytesForCall),
MacroAssembler::stackPointerRegister);
done.append(stubJit.jump());
@@ -419,8 +417,7 @@
slowPathCall = stubJit.nearCall();
stubJit.addPtr(
- MacroAssembler::TrustedImm32(
- alignedNumberOfNeededBytes - sizeof(CallerFrameAndPC)),
+ MacroAssembler::TrustedImm32(alignedNumberOfBytesForCall),
MacroAssembler::stackPointerRegister);
done.append(stubJit.jump());
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes