Changeset 37160 in webkit for trunk/JavaScriptCore/kjs/JSActivation.cpp
- Timestamp:
- Oct 1, 2008, 3:18:50 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/JSActivation.cpp
r37068 r37160 156 156 JSActivation* thisObj = static_cast<JSActivation*>(slot.slotBase()); 157 157 158 Arguments* arguments = static_cast<Arguments*>(thisObj->d()->registers[RegisterFile::OptionalCalleeArguments].jsValue(exec)); 159 if (!arguments) { 160 arguments = thisObj->createArgumentsObject(exec); 161 thisObj->d()->registers[RegisterFile::OptionalCalleeArguments] = arguments; 158 JSValue* arguments; 159 if (thisObj->d()->functionBody->usesArguments()) { 160 PropertySlot slot; 161 thisObj->symbolTableGet(exec->propertyNames().arguments, slot); 162 arguments = slot.getValue(exec, exec->propertyNames().arguments); 163 } else { 164 arguments = thisObj->d()->registers[RegisterFile::OptionalCalleeArguments].getJSValue(); 165 if (!arguments) { 166 arguments = new (exec) Arguments(exec, thisObj); 167 thisObj->d()->registers[RegisterFile::OptionalCalleeArguments] = arguments; 168 } 169 ASSERT(arguments->isObject(&Arguments::info)); 162 170 } 163 171 … … 173 181 } 174 182 175 Arguments* JSActivation::createArgumentsObject(ExecState* exec)176 {177 JSFunction* function;178 Register* argv;179 int argc;180 int firstParameterIndex;181 exec->machine()->getArgumentsData(d()->registers, function, firstParameterIndex, argv, argc);182 183 return new (exec) Arguments(exec, function, this, firstParameterIndex, argv, argc);184 }185 186 183 } // namespace JSC
Note:
See TracChangeset
for help on using the changeset viewer.