ZendArray::Bucket *ZendArray::find(const char *k, int len, int64 prehash) const { for (Bucket *p = m_arBuckets[prehash & m_nTableMask]; p; p = p->pNext) { if (hit_string_key(p, k, len, prehash)) return p; } return NULL; }
ZendArray::Bucket *ZendArray::findForInsert(const char *k, int len, int64 prehash) const { int n = 0; int32 hash = ZendArray::Bucket::encodeHash(prehash); for (Bucket *p = m_arBuckets[prehash & m_nTableMask]; p; p = p->pNext) { if (hit_string_key(p, k, len, hash)) return p; n++; } if (UNLIKELY(n > RuntimeOption::MaxArrayChain)) { raise_error("Array is too unbalanced (%d)", n); } return NULL; }