void JSFunction::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { if (!isHostFunction() && (mode == IncludeDontEnumProperties)) { propertyNames.add(exec->propertyNames().arguments); propertyNames.add(exec->propertyNames().callee); propertyNames.add(exec->propertyNames().caller); propertyNames.add(exec->propertyNames().length); } Base::getOwnPropertyNames(exec, propertyNames, mode); }
void StringObject::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { StringObject* thisObject = jsCast<StringObject*>(object); int size = thisObject->internalValue()->length(); for (int i = 0; i < size; ++i) propertyNames.add(Identifier(exec, String::number(i))); if (mode == IncludeDontEnumProperties) propertyNames.add(exec->propertyNames().length); return JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void RuntimeArray::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { unsigned length = getLength(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier::from(exec, i)); if (mode == IncludeDontEnumProperties) propertyNames.add(exec->propertyNames().length); JSObject::getOwnPropertyNames(exec, propertyNames, mode); }
void Arguments::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { for (unsigned i = 0; i < d->numArguments; ++i) { if (!d->deletedArguments || !d->deletedArguments[i]) propertyNames.add(Identifier(exec, UString::number(i))); } if (mode == IncludeDontEnumProperties) { propertyNames.add(exec->propertyNames().callee); propertyNames.add(exec->propertyNames().length); } JSObject::getOwnPropertyNames(exec, propertyNames, mode); }
void RuntimeArray::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { RuntimeArray* thisObject = jsCast<RuntimeArray*>(object); unsigned length = thisObject->getLength(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier::from(exec, i)); if (mode.includeDontEnumProperties()) propertyNames.add(exec->propertyNames().length); JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSTestEventTarget::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray& propertyNames, EnumerationMode mode) { auto* thisObject = jsCast<JSTestEventTarget*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); for (unsigned i = 0, count = thisObject->wrapped().length(); i < count; ++i) propertyNames.add(Identifier::from(state, i)); if (mode.includeDontEnumProperties()) { for (auto& propertyName : thisObject->wrapped().supportedPropertyNames()) propertyNames.add(Identifier::fromString(state, propertyName)); } Base::getOwnPropertyNames(thisObject, state, propertyNames, mode); }
void JSModuleEnvironment::getOwnNonIndexPropertyNames(JSObject* cell, ExecState* exec, PropertyNameArray& propertyNamesArray, EnumerationMode mode) { JSModuleEnvironment* thisObject = jsCast<JSModuleEnvironment*>(cell); if (propertyNamesArray.includeStringProperties()) { for (const auto& pair : thisObject->moduleRecord()->importEntries()) { const JSModuleRecord::ImportEntry& importEntry = pair.value; if (!importEntry.isNamespace(exec->vm())) propertyNamesArray.add(importEntry.localName); } } return Base::getOwnNonIndexPropertyNames(thisObject, exec, propertyNamesArray, mode); }
void Arguments::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { Arguments* thisObject = jsCast<Arguments*>(object); for (unsigned i = 0; i < thisObject->d->numArguments; ++i) { if (!thisObject->d->deletedArguments || !thisObject->d->deletedArguments[i]) propertyNames.add(Identifier(exec, UString::number(i))); } if (mode == IncludeDontEnumProperties) { propertyNames.add(exec->propertyNames().callee); propertyNames.add(exec->propertyNames().length); } JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSFunction::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { if (!isHostFunction() && (mode == IncludeDontEnumProperties)) { // Make sure prototype has been reified. PropertySlot slot; getOwnPropertySlotVirtual(exec, exec->propertyNames().prototype, slot); propertyNames.add(exec->propertyNames().arguments); propertyNames.add(exec->propertyNames().caller); propertyNames.add(exec->propertyNames().length); } Base::getOwnPropertyNames(exec, propertyNames, mode); }
void JSFunction::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSFunction* thisObject = jsCast<JSFunction*>(object); if (!thisObject->isHostFunction() && (mode == IncludeDontEnumProperties)) { // Make sure prototype has been reified. PropertySlot slot; thisObject->methodTable()->getOwnPropertySlot(thisObject, exec, exec->propertyNames().prototype, slot); propertyNames.add(exec->propertyNames().arguments); propertyNames.add(exec->propertyNames().caller); propertyNames.add(exec->propertyNames().length); } Base::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSArrayBufferView::getOwnNonIndexPropertyNames( JSObject* object, ExecState* exec, PropertyNameArray& array, EnumerationMode mode) { JSArrayBufferView* thisObject = jsCast<JSArrayBufferView*>(object); // length/byteOffset/byteLength are DontEnum, at least in Firefox. if (mode == IncludeDontEnumProperties) { array.add(exec->propertyNames().byteOffset); array.add(exec->propertyNames().byteLength); array.add(exec->propertyNames().buffer); } Base::getOwnNonIndexPropertyNames(thisObject, exec, array, mode); }
void Arguments::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { Arguments* thisObject = jsCast<Arguments*>(object); for (unsigned i = 0; i < thisObject->m_numArguments; ++i) { if (!thisObject->isArgument(i)) continue; propertyNames.add(Identifier::from(exec, i)); } if (shouldIncludeDontEnumProperties(mode)) { propertyNames.add(exec->propertyNames().callee); propertyNames.add(exec->propertyNames().length); } JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSFunction::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSFunction* thisObject = jsCast<JSFunction*>(object); if (!thisObject->isHostOrBuiltinFunction() && mode.includeDontEnumProperties()) { VM& vm = exec->vm(); // Make sure prototype has been reified. PropertySlot slot(thisObject); thisObject->methodTable(vm)->getOwnPropertySlot(thisObject, exec, vm.propertyNames->prototype, slot); propertyNames.add(vm.propertyNames->arguments); propertyNames.add(vm.propertyNames->caller); propertyNames.add(vm.propertyNames->length); propertyNames.add(vm.propertyNames->name); } Base::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode); }
void StringObject::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, bool includeNonEnumerable) { int size = internalValue()->value().size(); for (int i = 0; i < size; ++i) propertyNames.add(Identifier(exec, UString::from(i))); return JSObject::getOwnPropertyNames(exec, propertyNames); }
void StringObject::getPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) { int size = internalValue()->value().size(); for (int i = 0; i < size; i++) propertyNames.add(Identifier(exec, UString::from(i))); return JSObject::getPropertyNames(exec, propertyNames); }
void JSTouchList::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { ASSERT_GC_OBJECT_INHERITS(this, &s_info); for (unsigned i = 0; i < static_cast<TouchList*>(impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); Base::getOwnPropertyNames(exec, propertyNames, mode); }
void JSByteArray::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { unsigned length = m_storage->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier::from(exec, i)); JSObject::getOwnPropertyNames(exec, propertyNames, mode); }
void JSTestEventTarget::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSTestEventTarget* thisObject = jsCast<JSTestEventTarget*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, &s_info); for (unsigned i = 0; i < static_cast<TestEventTarget*>(thisObject->impl())->length(); ++i) propertyNames.add(Identifier::from(exec, i)); Base::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSModuleNamespaceObject::getOwnPropertyNames(JSObject* cell, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { // http://www.ecma-international.org/ecma-262/6.0/#sec-module-namespace-exotic-objects-ownpropertykeys JSModuleNamespaceObject* thisObject = jsCast<JSModuleNamespaceObject*>(cell); for (const auto& name : thisObject->m_exports) propertyNames.add(name.get()); return JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSTestNamedDeleterNoIdentifier::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray& propertyNames, EnumerationMode mode) { auto* thisObject = jsCast<JSTestNamedDeleterNoIdentifier*>(object); ASSERT_GC_OBJECT_INHERITS(object, info()); for (auto& propertyName : thisObject->wrapped().supportedPropertyNames()) propertyNames.add(Identifier::fromString(state, propertyName)); JSObject::getOwnPropertyNames(object, state, propertyNames, mode); }
void JSStorage::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { unsigned length = m_impl->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier(exec, stringToUString(m_impl->key(i)))); Base::getOwnPropertyNames(exec, propertyNames, mode); }
void JSDOMNamedFlowCollection::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSDOMNamedFlowCollection* thisObject = jsCast<JSDOMNamedFlowCollection*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); for (unsigned i = 0, count = thisObject->impl().length(); i < count; ++i) propertyNames.add(Identifier::from(exec, i)); Base::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSByteArray::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSByteArray* thisObject = jsCast<JSByteArray*>(object); unsigned length = thisObject->m_storage->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier::from(exec, i)); JSObject::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
void JSArray::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSArray* thisObject = jsCast<JSArray*>(object); if (mode.includeDontEnumProperties()) propertyNames.add(exec->propertyNames().length); JSObject::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode); }
void JSStorage::getOwnPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { JSStorage* thisObject = jsCast<JSStorage*>(object); unsigned length = thisObject->m_impl->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier(exec, stringToUString(thisObject->m_impl->key(i)))); Base::getOwnPropertyNames(thisObject, exec, propertyNames, mode); }
bool JSStorage::customGetPropertyNames(ExecState* exec, PropertyNameArray& propertyNames) { ExceptionCode ec; unsigned length = m_impl->length(); for (unsigned i = 0; i < length; ++i) propertyNames.add(Identifier(exec, m_impl->key(i, ec))); return false; }
void Structure::getPropertyNamesFromStructure(JSGlobalData& globalData, PropertyNameArray& propertyNames, EnumerationMode mode) { materializePropertyMapIfNecessary(globalData); if (!m_propertyTable) return; bool knownUnique = !propertyNames.size(); PropertyTable::iterator end = m_propertyTable->end(); for (PropertyTable::iterator iter = m_propertyTable->begin(); iter != end; ++iter) { ASSERT(m_hasNonEnumerableProperties || !(iter->attributes & DontEnum)); if (iter->key->isIdentifier() && (!(iter->attributes & DontEnum) || mode == IncludeDontEnumProperties)) { if (knownUnique) propertyNames.addKnownUnique(iter->key); else propertyNames.add(iter->key); } } }
void JSVariableObject::getOwnPropertyNames(ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode) { SymbolTable::const_iterator end = symbolTable().end(); for (SymbolTable::const_iterator it = symbolTable().begin(); it != end; ++it) { if (!(it->second.getAttributes() & DontEnum) || (mode == IncludeDontEnumProperties)) propertyNames.add(Identifier(exec, it->first.get())); } JSObject::getOwnPropertyNames(exec, propertyNames, mode); }
void JSTestOverrideBuiltins::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray& propertyNames, EnumerationMode mode) { auto* thisObject = jsCast<JSTestOverrideBuiltins*>(object); ASSERT_GC_OBJECT_INHERITS(thisObject, info()); if (mode.includeDontEnumProperties()) { for (auto& propertyName : thisObject->impl().supportedPropertyNames()) propertyNames.add(Identifier::fromString(state, propertyName)); } Base::getOwnPropertyNames(thisObject, state, propertyNames, mode); }
void JSArrayBuffer::getOwnNonIndexPropertyNames( JSObject* object, ExecState* exec, PropertyNameArray& array, EnumerationMode mode) { JSArrayBuffer* thisObject = jsCast<JSArrayBuffer*>(object); if (shouldIncludeDontEnumProperties(mode)) array.add(exec->propertyNames().byteLength); Base::getOwnNonIndexPropertyNames(thisObject, exec, array, mode); }