EncodedJSValue JSC_HOST_CALL MapIteratorPrototypeFuncNext(CallFrame* callFrame) { JSMapIterator* iterator = jsDynamicCast<JSMapIterator*>(callFrame->thisValue()); if (!iterator) return JSValue::encode(throwTypeError(callFrame, ASCIILiteral("Cannot call MapIterator.next() on a non-MapIterator object"))); JSValue result; if (iterator->next(callFrame, result)) return JSValue::encode(createIteratorResultObject(callFrame, result, false)); iterator->finish(); return JSValue::encode(createIteratorResultObject(callFrame, jsUndefined(), true)); }
EncodedJSValue JSC_HOST_CALL propertyNameIteratorFuncNext(ExecState* exec) { VM& vm = exec->vm(); auto scope = DECLARE_THROW_SCOPE(vm); JSPropertyNameIterator* iterator = jsDynamicCast<JSPropertyNameIterator*>(exec->thisValue()); if (!iterator) return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral("Cannot call PropertyNameIterator.next() on a non-PropertyNameIterator object"))); JSValue result; if (iterator->next(exec, result)) return JSValue::encode(createIteratorResultObject(exec, result, false)); return JSValue::encode(createIteratorResultObject(exec, jsUndefined(), true)); }