Exemplo n.º 1
0
void PropertyNameArray::add(StringImpl* identifier)
{
    ASSERT(!identifier || (identifier == StringImpl::empty() || identifier->isAtomic() || identifier->isSymbol()));
    if (!ASSERT_DISABLED) {
        Optional<uint32_t> index = parseIndex(Identifier::fromUid(m_vm, identifier));
        ASSERT_UNUSED(index, !index || index.value() >= m_previouslyEnumeratedLength);
    }

    if (m_alternateSet && m_alternateSet->contains(identifier))
        return;

    if (!m_set->add(identifier).isNewEntry)
        return;

    addKnownUnique(identifier);
}
Exemplo n.º 2
0
void PropertyNameArray::add(StringImpl* identifier)
{
    ASSERT(!identifier || identifier == StringImpl::empty() || identifier->isAtomic());

    size_t size = m_data->propertyNameVector().size();
    if (size < setThreshold) {
        for (size_t i = 0; i < size; ++i) {
            if (identifier == m_data->propertyNameVector()[i].impl())
                return;
        }
    } else {
        if (m_set.isEmpty()) {
            for (size_t i = 0; i < size; ++i)
                m_set.add(m_data->propertyNameVector()[i].impl());
        }
        if (!m_set.add(identifier).isNewEntry)
            return;
    }

    addKnownUnique(identifier);
}