Changeset 244865 in webkit
- Timestamp:
- May 1, 2019, 8:10:43 PM (7 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 3 edited
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/stress/check-stack-overflow-before-value-profiling-arguments.js (added)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/jit/JIT.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r244864 r244865 1 2019-05-01 Saam barati <sbarati@apple.com> 2 3 Baseline JIT should do argument value profiling after checking for stack overflow 4 https://bugs.webkit.org/show_bug.cgi?id=197052 5 <rdar://problem/50009602> 6 7 Reviewed by Yusuke Suzuki. 8 9 * stress/check-stack-overflow-before-value-profiling-arguments.js: Added. 10 1 11 2019-05-01 Yusuke Suzuki <ysuzuki@apple.com> 2 12 -
trunk/Source/JavaScriptCore/ChangeLog
r244864 r244865 1 2019-05-01 Saam barati <sbarati@apple.com> 2 3 Baseline JIT should do argument value profiling after checking for stack overflow 4 https://bugs.webkit.org/show_bug.cgi?id=197052 5 <rdar://problem/50009602> 6 7 Reviewed by Yusuke Suzuki. 8 9 Otherwise, we may do value profiling without running a write barrier, which 10 is against the rules of how we do value profiling. 11 12 * jit/JIT.cpp: 13 (JSC::JIT::compileWithoutLinking): 14 1 15 2019-05-01 Yusuke Suzuki <ysuzuki@apple.com> 2 16 -
trunk/Source/JavaScriptCore/jit/JIT.cpp
r244811 r244865 682 682 #endif 683 683 684 int frameTopOffset = stackPointerOffsetFor(m_codeBlock) * sizeof(Register); 685 unsigned maxFrameSize = -frameTopOffset; 686 addPtr(TrustedImm32(frameTopOffset), callFrameRegister, regT1); 687 JumpList stackOverflow; 688 if (UNLIKELY(maxFrameSize > Options::reservedZoneSize())) 689 stackOverflow.append(branchPtr(Above, regT1, callFrameRegister)); 690 stackOverflow.append(branchPtr(Above, AbsoluteAddress(m_vm->addressOfSoftStackLimit()), regT1)); 691 692 move(regT1, stackPointerRegister); 693 checkStackPointerAlignment(); 694 if (Options::zeroStackFrame()) 695 clearStackFrame(callFrameRegister, stackPointerRegister, regT0, maxFrameSize); 696 697 emitSaveCalleeSaves(); 698 emitMaterializeTagCheckRegisters(); 699 684 700 if (m_codeBlock->codeType() == FunctionCode) { 685 701 ASSERT(m_bytecodeOffset == std::numeric_limits<unsigned>::max()); … … 701 717 } 702 718 } 703 704 int frameTopOffset = stackPointerOffsetFor(m_codeBlock) * sizeof(Register);705 unsigned maxFrameSize = -frameTopOffset;706 addPtr(TrustedImm32(frameTopOffset), callFrameRegister, regT1);707 JumpList stackOverflow;708 if (UNLIKELY(maxFrameSize > Options::reservedZoneSize()))709 stackOverflow.append(branchPtr(Above, regT1, callFrameRegister));710 stackOverflow.append(branchPtr(Above, AbsoluteAddress(m_vm->addressOfSoftStackLimit()), regT1));711 712 move(regT1, stackPointerRegister);713 checkStackPointerAlignment();714 if (Options::zeroStackFrame())715 clearStackFrame(callFrameRegister, stackPointerRegister, regT0, maxFrameSize);716 717 emitSaveCalleeSaves();718 emitMaterializeTagCheckRegisters();719 719 720 720 RELEASE_ASSERT(!JITCode::isJIT(m_codeBlock->jitType()));
Note:
See TracChangeset
for help on using the changeset viewer.