ArrayData *VectorArray::add(int64 k, CVarRef v, bool copy) { assert(!exists(k)); if (k == m_size) return VectorArray::append(v, copy); ZendArray *a = escalateToZendArray(); a->add(k, v, false); return a; }
ArrayData *VectorArray::add(CVarRef k, CVarRef v, bool copy) { ASSERT(!exists(k)); Variant::TypedValueAccessor tva = k.getTypedAccessor(); if (isIntKey(tva)) return VectorArray::add(getIntKey(tva), v, copy); ASSERT(k.isString()); ZendArray *a = escalateToZendArray(); a->add(StrNR(getStringKey(tva)), v, false); return a; }
HOT_FUNC_HPHP ArrayData *VectorArray::set(CVarRef k, CVarRef v, bool copy) { Variant::TypedValueAccessor tva = k.getTypedAccessor(); if (isIntKey(tva)) { return VectorArray::set(getIntKey(tva), v, copy); } ASSERT(k.isString()); ZendArray *a = escalateToZendArray(); a->add(StrNR(getStringKey(tva)), v, false); return a; }
HOT_FUNC_HPHP ArrayData *VectorArray::set(int64 k, CVarRef v, bool copy) { if (inRange(k, m_size)) { if (copy) { VectorArray *a = NEW(VectorArray)(this); tvAsVariant(&a->m_elems[k]).assignVal(v); return a; } tvAsVariant(&m_elems[k]).assignVal(v); return nullptr; } if (k == m_size) return VectorArray::append(v, copy); ZendArray *a = escalateToZendArray(); a->add(k, v, false); return a; }
HOT_FUNC_HPHP ArrayData *ZendArray::add(CStrRef k, CVarRef v, bool copy) { ASSERT(!exists(k)); if (UNLIKELY(copy)) { ZendArray *result = copyImpl(); result->add(k, v, false); return result; } int64 h = k->hash(); Bucket *p = NEW(Bucket)(v); p->setStrKey(k.get(), h); uint nIndex = (h & m_nTableMask); CONNECT_TO_BUCKET_LIST(p, m_arBuckets[nIndex]); SET_ARRAY_BUCKET_HEAD(m_arBuckets, nIndex, p); CONNECT_TO_GLOBAL_DLLIST(p); if (++m_size > tableSize()) { resize(); } return NULL; }
ArrayData *ZendArray::add(CStrRef k, CVarRef v, bool copy) { ASSERT(!exists(k)); if (UNLIKELY(copy)) { ZendArray *result = copyImpl(); result->add(k, v, false); return result; } int64 h = k->hash(); Bucket *p = NEW(Bucket)(v); p->key = k.get(); p->key->incRefCount(); p->h = h; uint nIndex = (h & m_nTableMask); CONNECT_TO_BUCKET_LIST(p, m_arBuckets[nIndex]); SET_ARRAY_BUCKET_HEAD(m_arBuckets, nIndex, p); CONNECT_TO_GLOBAL_DLLIST(p); if (++m_nNumOfElements > m_nTableSize) { resize(); } return NULL; }
ArrayData *ZendArray::add(int64 k, CVarRef v, bool copy) { ASSERT(!exists(k)); if (UNLIKELY(copy)) { ZendArray *result = copyImpl(); result->add(k, v, false); return result; } Bucket *p = NEW(Bucket)(v); p->h = k; uint nIndex = (k & m_nTableMask); CONNECT_TO_BUCKET_LIST(p, m_arBuckets[nIndex]); SET_ARRAY_BUCKET_HEAD(m_arBuckets, nIndex, p); CONNECT_TO_GLOBAL_DLLIST(p); if (k >= m_nNextFreeElement && m_nNextFreeElement >= 0) { m_nNextFreeElement = k + 1; } if (++m_nNumOfElements > m_nTableSize) { resize(); } return NULL; }
ArrayData *VectorArray::add(StringData* k, CVarRef v, bool copy) { ZendArray *a = escalateToZendArray(); a->add(k, v, false); return a; }
HOT_FUNC_HPHP ArrayData *VectorArray::set(CStrRef k, CVarRef v, bool copy) { ZendArray *a = escalateToZendArray(); a->add(k, v, false); return a; }