JSValue JSActivation::argumentsGetter(ExecState* exec, const Identifier&, const PropertySlot& slot) { JSActivation* activation = asActivation(slot.slotBase()); if (activation->d()->functionExecutable->usesArguments()) { PropertySlot slot; activation->symbolTableGet(exec->propertyNames().arguments, slot); return slot.getValue(exec, exec->propertyNames().arguments); } CallFrame* callFrame = CallFrame::create(activation->d()->registers); Arguments* arguments = callFrame->optionalCalleeArguments(); if (!arguments) { arguments = new (callFrame) Arguments(callFrame); arguments->copyRegisters(); callFrame->setCalleeArguments(arguments); } ASSERT(arguments->inherits(&Arguments::info)); return arguments; }