Changeset 107126 in webkit
- Timestamp:
- Feb 8, 2012 1:22:49 PM (12 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r107036 r107126 1 2012-02-08 Oliver Hunt <oliver@apple.com> 2 3 updateTopCallframe in the baseline JIT doesn't provide enough information to the stubs 4 https://bugs.webkit.org/show_bug.cgi?id=78145 5 6 Reviewed by Gavin Barraclough. 7 8 Fix the updateTopCallFrame helper to store additional information 9 that becomes necessary when we are trying to provide more stack 10 frame information. 11 12 * interpreter/CallFrame.h: 13 (JSC::ExecState::bytecodeOffsetForBaselineJIT): 14 (ExecState): 15 * jit/JIT.cpp: 16 (JSC::JIT::privateCompile): 17 * jit/JIT.h: 18 (JSC::JIT::compileGetByIdProto): 19 (JSC::JIT::compileGetByIdSelfList): 20 (JSC::JIT::compileGetByIdProtoList): 21 (JSC::JIT::compileGetByIdChainList): 22 (JSC::JIT::compileGetByIdChain): 23 (JSC::JIT::compilePutByIdTransition): 24 (JIT): 25 * jit/JITInlineMethods.h: 26 (JSC::JIT::updateTopCallFrame): 27 1 28 2012-02-07 Robert Kroeger <rjkroege@chromium.org> 2 29 -
trunk/Source/JavaScriptCore/interpreter/CallFrame.h
r106067 r107126 107 107 #endif 108 108 AbstractPC abstractReturnPC(JSGlobalData& globalData) { return AbstractPC(globalData, this); } 109 unsigned bytecodeOffsetForBaselineJIT() { return this[RegisterFile::ArgumentCount].tag(); } 110 109 111 #if ENABLE(DFG_JIT) 110 112 InlineCallFrame* inlineCallFrame() const { return this[RegisterFile::ReturnPC].asInlineCallFrame(); } -
trunk/Source/JavaScriptCore/jit/JIT.cpp
r106255 r107126 607 607 branch32(AboveOrEqual, regT1, TrustedImm32(m_codeBlock->m_numParameters)).linkTo(beginLabel, this); 608 608 609 m_bytecodeOffset = 0; 609 610 JITStubCall(this, m_codeBlock->m_isConstructor ? cti_op_construct_arityCheck : cti_op_call_arityCheck).call(callFrameRegister); 611 #if !ASSERT_DISABLED 612 m_bytecodeOffset = (unsigned)-1; // Reset this, in order to guard its use with ASSERTs. 613 #endif 610 614 611 615 jump(beginLabel); -
trunk/Source/JavaScriptCore/jit/JIT.h
r106255 r107126 208 208 { 209 209 JIT jit(globalData, codeBlock); 210 jit.m_bytecodeOffset = stubInfo->bytecodeIndex; 210 211 jit.privateCompileGetByIdProto(stubInfo, structure, prototypeStructure, ident, slot, cachedOffset, returnAddress, callFrame); 211 212 } … … 214 215 { 215 216 JIT jit(globalData, codeBlock); 217 jit.m_bytecodeOffset = stubInfo->bytecodeIndex; 216 218 jit.privateCompileGetByIdSelfList(stubInfo, polymorphicStructures, currentIndex, structure, ident, slot, cachedOffset); 217 219 } … … 219 221 { 220 222 JIT jit(globalData, codeBlock); 223 jit.m_bytecodeOffset = stubInfo->bytecodeIndex; 221 224 jit.privateCompileGetByIdProtoList(stubInfo, prototypeStructureList, currentIndex, structure, prototypeStructure, ident, slot, cachedOffset, callFrame); 222 225 } … … 224 227 { 225 228 JIT jit(globalData, codeBlock); 229 jit.m_bytecodeOffset = stubInfo->bytecodeIndex; 226 230 jit.privateCompileGetByIdChainList(stubInfo, prototypeStructureList, currentIndex, structure, chain, count, ident, slot, cachedOffset, callFrame); 227 231 } … … 230 234 { 231 235 JIT jit(globalData, codeBlock); 236 jit.m_bytecodeOffset = stubInfo->bytecodeIndex; 232 237 jit.privateCompileGetByIdChain(stubInfo, structure, chain, count, ident, slot, cachedOffset, returnAddress, callFrame); 233 238 } … … 236 241 { 237 242 JIT jit(globalData, codeBlock); 243 jit.m_bytecodeOffset = stubInfo->bytecodeIndex; 238 244 jit.privateCompilePutByIdTransition(stubInfo, oldStructure, newStructure, cachedOffset, chain, returnAddress, direct); 239 245 } … … 399 405 static const int patchOffsetGetByIdPutResult = 22; 400 406 #if ENABLE(OPCODE_SAMPLING) 401 static const int patchOffsetGetByIdSlowCaseCall = 37;402 #else 403 static const int patchOffsetGetByIdSlowCaseCall = 33;407 static const int patchOffsetGetByIdSlowCaseCall = 44; 408 #else 409 static const int patchOffsetGetByIdSlowCaseCall = 40; 404 410 #endif 405 411 static const int patchOffsetOpCallCompareToJump = 6; … … 422 428 #error "OPCODE_SAMPLING is not yet supported" 423 429 #else 424 static const int patchOffsetGetByIdSlowCaseCall = 4 0;430 static const int patchOffsetGetByIdSlowCaseCall = 48; 425 431 #endif 426 432 static const int patchOffsetOpCallCompareToJump = 12; … … 459 465 #error "OPCODE_SAMPLING is not yet supported" 460 466 #else 461 static const int patchOffsetGetByIdSlowCaseCall = 4 0;467 static const int patchOffsetGetByIdSlowCaseCall = 48; 462 468 #endif 463 469 static const int patchOffsetOpCallCompareToJump = 16; … … 635 641 static const int patchOffsetGetByIdPutResult = 28; 636 642 #if ENABLE(OPCODE_SAMPLING) 637 static const int patchOffsetGetByIdSlowCaseCall = 64;638 #else 639 static const int patchOffsetGetByIdSlowCaseCall = 54;643 static const int patchOffsetGetByIdSlowCaseCall = 72; 644 #else 645 static const int patchOffsetGetByIdSlowCaseCall = 62; 640 646 #endif 641 647 static const int patchOffsetOpCallCompareToJump = 9; -
trunk/Source/JavaScriptCore/jit/JITInlineMethods.h
r106676 r107126 265 265 ALWAYS_INLINE void JIT::updateTopCallFrame() 266 266 { 267 ASSERT(static_cast<int>(m_bytecodeOffset) >= 0); 268 if (m_bytecodeOffset) 269 store32(Imm32(m_bytecodeOffset + 1), intTagFor(RegisterFile::ArgumentCount)); 267 270 storePtr(callFrameRegister, &m_globalData->topCallFrame); 268 271 }
Note: See TracChangeset
for help on using the changeset viewer.