void ClonedArguments::materializeSpecials(ExecState* exec) { RELEASE_ASSERT(!specialsMaterialized()); VM& vm = exec->vm(); FunctionExecutable* executable = jsCast<FunctionExecutable*>(m_callee->executable()); bool isStrictMode = executable->isStrictMode(); if (isStrictMode) putDirectAccessor(exec, vm.propertyNames->callee, globalObject()->throwTypeErrorArgumentsCalleeAndCallerGetterSetter(), DontDelete | DontEnum | Accessor); else putDirect(vm, vm.propertyNames->callee, JSValue(m_callee.get())); putDirect(vm, vm.propertyNames->iteratorSymbol, globalObject()->arrayProtoValuesFunction(), DontEnum); m_callee.clear(); }
void ClonedArguments::materializeSpecialsIfNecessary(ExecState* exec) { if (!specialsMaterialized()) materializeSpecials(exec); }