Changeset 43854 in webkit for trunk/JavaScriptCore/jit/JITStubs.cpp
- Timestamp:
- May 18, 2009, 10:39:07 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITStubs.cpp
r43839 r43854 1596 1596 int32_t expectedParams = asFunction(callFrame[RegisterFile::Callee].jsValue())->body()->parameterCount(); 1597 1597 int32_t inplaceArgs = min(providedParams, expectedParams); 1598 int32_t i = 0;1599 Register* argStore = callFrame->registers() + argsOffset;1600 1598 1599 Register* inplaceArgsDst = callFrame->registers() + argsOffset; 1600 1601 Register* inplaceArgsEnd = inplaceArgsDst + inplaceArgs; 1602 Register* inplaceArgsEnd2 = inplaceArgsDst + providedParams; 1603 1604 Register* inplaceArgsSrc = callFrame->registers() - RegisterFile::CallFrameHeaderSize - expectedParams; 1605 Register* inplaceArgsSrc2 = inplaceArgsSrc - providedParams - 1 + inplaceArgs; 1606 1601 1607 // First step is to copy the "expected" parameters from their normal location relative to the callframe 1602 for (; i < inplaceArgs; i++) 1603 argStore[i] = callFrame->registers()[i - RegisterFile::CallFrameHeaderSize - expectedParams]; 1608 while (inplaceArgsDst < inplaceArgsEnd) 1609 *inplaceArgsDst++ = *inplaceArgsSrc++; 1610 1604 1611 // Then we copy any additional arguments that may be further up the stack ('-1' to account for 'this') 1605 for (; i < providedParams; i++) 1606 argStore[i] = callFrame->registers()[i - RegisterFile::CallFrameHeaderSize - expectedParams - providedParams - 1]; 1612 while (inplaceArgsDst < inplaceArgsEnd2) 1613 *inplaceArgsDst++ = *inplaceArgsSrc2++; 1614 1607 1615 } else if (!arguments.isUndefinedOrNull()) { 1608 1616 if (!arguments.isObject()) { … … 1653 1661 } 1654 1662 } 1655 CHECK_FOR_EXCEPTION_AT_END(); 1663 1656 1664 return argCount + 1; 1657 1665 }
Note:
See TracChangeset
for help on using the changeset viewer.