Changeset 147670 in webkit for trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
- Timestamp:
- Apr 4, 2013, 2:25:26 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp
r146552 r147670 200 200 201 201 202 static CallFrame* getCallerInfo(JSGlobalData*, CallFrame*, int& lineNumber, unsigned& bytecodeOffset );202 static CallFrame* getCallerInfo(JSGlobalData*, CallFrame*, int& lineNumber, unsigned& bytecodeOffset, CodeBlock*& callerOut); 203 203 204 204 // Returns the depth of the scope chain within a given call frame. … … 423 423 unsigned bytecodeOffset = 0; 424 424 int line = 0; 425 getCallerInfo(&callFrame->globalData(), callFrame, line, bytecodeOffset); 425 CodeBlock* unusedCallerCodeBlock = 0; 426 getCallerInfo(&callFrame->globalData(), callFrame, line, bytecodeOffset, unusedCallerCodeBlock); 426 427 dataLogF("[ReturnVPC] | %10p | %d (line %d)\n", it, bytecodeOffset, line); 427 428 ++it; … … 507 508 if (callerFrame->hasHostCallFrameFlag()) 508 509 return false; 509 510 codeBlock = callerFrame->codeBlock(); 511 512 // Because of how the JIT records call site->bytecode offset 513 // information the JIT reports the bytecodeOffset for the returnPC 514 // to be at the beginning of the opcode that has caused the call. 515 #if ENABLE(JIT) || ENABLE(LLINT) 516 bytecodeOffset = codeBlock->bytecodeOffset(callerFrame, callFrame->returnPC()); 517 #endif 518 519 callFrame = callerFrame; 510 int unusedLineNumber = 0; 511 callFrame = getCallerInfo(&callFrame->globalData(), callFrame, unusedLineNumber, bytecodeOffset, codeBlock); 520 512 return true; 521 513 } … … 589 581 } 590 582 591 static CallFrame* getCallerInfo(JSGlobalData* globalData, CallFrame* callFrame, int& lineNumber, unsigned& bytecodeOffset )592 { 593 UNUSED_PARAM(globalData);583 static CallFrame* getCallerInfo(JSGlobalData* globalData, CallFrame* callFrame, int& lineNumber, unsigned& bytecodeOffset, CodeBlock*& caller) 584 { 585 ASSERT_UNUSED(globalData, globalData); 594 586 bytecodeOffset = 0; 595 587 lineNumber = -1; … … 599 591 ASSERT(!callerFrame->hasHostCallFrameFlag()); 600 592 601 if (callerFrame == CallFrame::noCaller() || !callerFrame || !callerFrame->codeBlock()) 593 if (callerFrame == CallFrame::noCaller() || !callerFrame || !callerFrame->codeBlock()) { 594 caller = 0; 602 595 return callerFrame; 596 } 603 597 604 598 CodeBlock* callerCodeBlock = callerFrame->codeBlock(); … … 660 654 661 655 RELEASE_ASSERT(callerCodeBlock); 656 caller = callerCodeBlock; 662 657 lineNumber = callerCodeBlock->lineNumberForBytecodeOffset(bytecodeOffset); 663 658 return callerFrame; … … 706 701 } 707 702 unsigned unusedBytecodeOffset = 0; 708 callFrame = getCallerInfo(globalData, callFrame, line, unusedBytecodeOffset); 703 CodeBlock* unusedCallerCodeBlock = 0; 704 callFrame = getCallerInfo(globalData, callFrame, line, unusedBytecodeOffset, unusedCallerCodeBlock); 709 705 } 710 706 } … … 1382 1378 int lineNumber; 1383 1379 unsigned bytecodeOffset; 1384 CallFrame* callerFrame = getCallerInfo(&callFrame->globalData(), functionCallFrame, lineNumber, bytecodeOffset); 1380 CodeBlock* unusedCallerCodeBlock = 0; 1381 CallFrame* callerFrame = getCallerInfo(&callFrame->globalData(), functionCallFrame, lineNumber, bytecodeOffset, unusedCallerCodeBlock); 1385 1382 if (!callerFrame) 1386 1383 return jsNull(); … … 1392 1389 ASSERT(caller.isObject()); 1393 1390 while (asObject(caller)->inherits(&JSBoundFunction::s_info)) { 1394 callerFrame = getCallerInfo(&callFrame->globalData(), callerFrame, lineNumber, bytecodeOffset );1391 callerFrame = getCallerInfo(&callFrame->globalData(), callerFrame, lineNumber, bytecodeOffset, unusedCallerCodeBlock); 1395 1392 if (!callerFrame) 1396 1393 return jsNull();
Note:
See TracChangeset
for help on using the changeset viewer.