Changeset 37576 in webkit for trunk/JavaScriptCore
- Timestamp:
- Oct 13, 2008, 10:29:39 PM (17 years ago)
- Location:
- trunk/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/ChangeLog
r37575 r37576 1 2008-10-13 Maciej Stachowiak <[email protected]> 2 3 Reviewed by Cameron Zwarich. 4 5 - make Machine::getArgumentsData an Arguments method and inline it 6 7 ~2% on v8 raytrace 8 9 * VM/Machine.cpp: 10 * kjs/Arguments.h: 11 (JSC::Machine::getArgumentsData): 12 1 13 2008-10-13 Alp Toker <[email protected]> 2 14 -
trunk/JavaScriptCore/VM/Machine.cpp
r37570 r37576 3974 3974 } 3975 3975 3976 void Machine::getArgumentsData(CallFrame* callFrame, JSFunction*& function, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc)3977 {3978 function = callFrame->callee();3979 3980 CodeBlock* codeBlock = &function->m_body->generatedByteCode();3981 int numParameters = codeBlock->numParameters;3982 argc = callFrame->argumentCount();3983 3984 if (argc <= numParameters)3985 argv = callFrame->registers() - RegisterFile::CallFrameHeaderSize - numParameters + 1; // + 1 to skip "this"3986 else3987 argv = callFrame->registers() - RegisterFile::CallFrameHeaderSize - numParameters - argc + 1; // + 1 to skip "this"3988 3989 argc -= 1; // - 1 to skip "this"3990 firstParameterIndex = -RegisterFile::CallFrameHeaderSize - numParameters + 1; // + 1 to skip "this"3991 }3992 3993 3976 #if ENABLE(CTI) 3994 3977 -
trunk/JavaScriptCore/kjs/Arguments.h
r37450 r37576 72 72 73 73 private: 74 void getArgumentsData(CallFrame*, JSFunction*&, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc); 74 75 virtual bool getOwnPropertySlot(ExecState*, const Identifier& propertyName, PropertySlot&); 75 76 virtual bool getOwnPropertySlot(ExecState*, unsigned propertyName, PropertySlot&); … … 86 87 }; 87 88 89 ALWAYS_INLINE void Arguments::getArgumentsData(CallFrame* callFrame, JSFunction*& function, ptrdiff_t& firstParameterIndex, Register*& argv, int& argc) 90 { 91 function = callFrame->callee(); 92 93 CodeBlock* codeBlock = &function->m_body->generatedByteCode(); 94 int numParameters = codeBlock->numParameters; 95 argc = callFrame->argumentCount(); 96 97 if (argc <= numParameters) 98 argv = callFrame->registers() - RegisterFile::CallFrameHeaderSize - numParameters + 1; // + 1 to skip "this" 99 else 100 argv = callFrame->registers() - RegisterFile::CallFrameHeaderSize - numParameters - argc + 1; // + 1 to skip "this" 101 102 argc -= 1; // - 1 to skip "this" 103 firstParameterIndex = -RegisterFile::CallFrameHeaderSize - numParameters + 1; // + 1 to skip "this" 104 } 105 88 106 inline Arguments::Arguments(CallFrame* callFrame) 89 107 : JSObject(callFrame->lexicalGlobalObject()->argumentsStructure()) … … 94 112 Register* argv; 95 113 int numArguments; 96 callFrame->machine()->getArgumentsData(callFrame, callee, firstParameterIndex, argv, numArguments);114 getArgumentsData(callFrame, callee, firstParameterIndex, argv, numArguments); 97 115 98 116 d->numParameters = callee->m_body->parameterCount();
Note:
See TracChangeset
for help on using the changeset viewer.