Changeset 34036 in webkit for trunk/JavaScriptCore/VM/Machine.cpp
- Timestamp:
- May 22, 2008, 3:09:43 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/VM/Machine.cpp
r34032 r34036 39 39 #include "JSPropertyNameIterator.h" 40 40 #include "Parser.h" 41 #include "Profiler.h" 41 42 #include "Register.h" 42 43 #include "array_object.h" … … 437 438 } 438 439 439 static NEVER_INLINE JSValue* eval(ExecState* exec, JSObject* thisObj, ScopeChainNode* scopeChain, RegisterFile* registerFile, Register* r, int argv, int argc, JSValue*& exceptionValue) 440 { 440 #if JAVASCRIPT_PROFILING 441 static NEVER_INLINE JSValue* callEval(ExecState* exec, JSObject* evalFunction, JSObject* thisObj, ScopeChainNode* scopeChain, RegisterFile* registerFile, Register* r, int argv, int argc, JSValue*& exceptionValue) 442 { 443 Profiler::profiler()->willExecute(exec, evalFunction); 444 #else 445 static NEVER_INLINE JSValue* callEval(ExecState* exec, JSObject* thisObj, ScopeChainNode* scopeChain, RegisterFile* registerFile, Register* r, int argv, int argc, JSValue*& exceptionValue) 446 { 447 #endif 448 441 449 JSValue* x = argc >= 2 ? r[argv + 1].u.jsValue : jsUndefined(); 442 450 … … 461 469 } 462 470 471 #if JAVASCRIPT_PROFILING 472 JSValue* result = machine().execute(evalNode.get(), exec, thisObj, registerFile, r - (*registerFile->basePointer()) + argv + argc, scopeChain, &exceptionValue); 473 474 Profiler::profiler()->didExecute(exec, evalFunction); 475 476 return result; 477 #else 463 478 return machine().execute(evalNode.get(), exec, thisObj, registerFile, r - (*registerFile->basePointer()) + argv + argc, scopeChain, &exceptionValue); 479 #endif 464 480 } 465 481 … … 590 606 exec->m_callFrameOffset = callerRegisterOffset - codeBlock->numLocals - CallFrameHeaderSize; 591 607 vPC = callFrame[ReturnVPC].u.vPC; 608 609 #if JAVASCRIPT_PROFILING 610 Profiler::profiler()->didExecute(exec, callFrame[Callee].u.jsObject); 611 #endif 592 612 return true; 593 613 } … … 638 658 } 639 659 660 #if JAVASCRIPT_PROFILING 661 Profiler::profiler()->willExecute(exec, programNode->sourceURL(), programNode->lineNo()); 662 #endif 663 640 664 RegisterFile* registerFile = registerFileStack->pushGlobalRegisterFile(); 641 665 ASSERT(registerFile->numGlobalSlots()); … … 658 682 659 683 registerFileStack->popGlobalRegisterFile(); 684 685 #if JAVASCRIPT_PROFILING 686 Profiler::profiler()->didExecute(exec, programNode->sourceURL(), programNode->lineNo()); 687 #endif 688 660 689 return result; 661 690 } … … 667 696 return 0; 668 697 } 698 699 #if JAVASCRIPT_PROFILING 700 Profiler::profiler()->willExecute(exec, function); 701 #endif 669 702 670 703 RegisterFile* registerFile = registerFileStack->current(); … … 712 745 registerFile->shrink(oldSize); 713 746 return result; 714 715 747 } 716 748 … … 721 753 return 0; 722 754 } 755 756 #if JAVASCRIPT_PROFILING 757 Profiler::profiler()->willExecute(exec, evalNode->sourceURL(), evalNode->lineNo()); 758 #endif 759 723 760 EvalCodeBlock* codeBlock = &evalNode->code(scopeChain); 724 761 … … 768 805 769 806 registerFile->shrink(oldSize); 807 808 #if JAVASCRIPT_PROFILING 809 Profiler::profiler()->didExecute(exec, evalNode->sourceURL(), evalNode->lineNo()); 810 #endif 811 770 812 return result; 771 813 } … … 1814 1856 1815 1857 registerFile->setSafeForReentry(true); 1816 JSValue* result = eval(exec, thisObject, scopeChain, registerFile, r, argv, argc, exceptionValue); 1858 #if JAVASCRIPT_PROFILING 1859 JSValue* result = callEval(exec, static_cast<JSObject*>(v), thisObject, scopeChain, registerFile, r, argv, argc, exceptionValue); 1860 #else 1861 JSValue* result = callEval(exec, thisObject, scopeChain, registerFile, r, argv, argc, exceptionValue); 1862 #endif 1817 1863 registerFile->setSafeForReentry(false); 1818 1864 r = (*registerBase) + registerOffset; … … 1854 1900 1855 1901 if (callType == CallTypeJS) { 1902 #if JAVASCRIPT_PROFILING 1903 Profiler::profiler()->willExecute(exec, static_cast<JSObject*>(v)); 1904 #endif 1856 1905 int registerOffset = r - (*registerBase); 1857 1906 Register* callFrame = r + argv - CallFrameHeaderSize; … … 1879 1928 1880 1929 if (callType == CallTypeNative) { 1930 #if JAVASCRIPT_PROFILING 1931 Profiler::profiler()->willExecute(exec, static_cast<JSObject*>(v)); 1932 #endif 1881 1933 int registerOffset = r - (*registerBase); 1882 1934 1883 1935 r[argv].u.jsValue = base == missingThisObjectMarker() ? exec->globalThisValue() : (r[base].u.jsValue)->toObject(exec); // "this" value 1884 1936 JSObject* thisObj = static_cast<JSObject*>(r[argv].u.jsValue); … … 1893 1945 r[dst].u.jsValue = returnValue; 1894 1946 1947 #if JAVASCRIPT_PROFILING 1948 Profiler::profiler()->didExecute(exec, static_cast<JSObject*>(v)); 1949 #endif 1895 1950 VM_CHECK_EXCEPTION(); 1896 1951 … … 1939 1994 r[r0].u.jsValue = returnValue; 1940 1995 1996 #if JAVASCRIPT_PROFILING 1997 Profiler::profiler()->didExecute(exec, callFrame[Callee].u.jsObject); 1998 #endif 1941 1999 NEXT_OPCODE; 1942 2000 } … … 1956 2014 1957 2015 if (constructType == ConstructTypeJS) { 2016 #if JAVASCRIPT_PROFILING 2017 Profiler::profiler()->willExecute(exec, constructor); 2018 #endif 1958 2019 int registerOffset = r - (*registerBase); 1959 2020 Register* callFrame = r + argv - CallFrameHeaderSize; … … 1989 2050 1990 2051 if (constructType == ConstructTypeNative) { 2052 #if JAVASCRIPT_PROFILING 2053 Profiler::profiler()->willExecute(exec, constructor); 2054 #endif 1991 2055 int registerOffset = r - (*registerBase); 1992 2056 … … 2000 2064 r[dst].u.jsValue = returnValue; 2001 2065 2066 #if JAVASCRIPT_PROFILING 2067 Profiler::profiler()->didExecute(exec, constructor); 2068 #endif 2002 2069 ++vPC; 2003 2070 NEXT_OPCODE;
Note:
See TracChangeset
for help on using the changeset viewer.