Exemple #1
0
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;
}