Esempio n. 1
0
ArrayData *ArrayData::GetScalarArray(ArrayData *arr,
                                     const StringData *key /* = NULL */) {
  if (key == NULL) {
    key = StringData::GetStaticString(f_serialize(arr).get());
  } else {
    assert(key->isStatic());
    assert(key->same(f_serialize(arr).get()));
  }
  ArrayDataMap::accessor acc;
  if (s_arrayDataMap.insert(acc, key)) {
    ArrayData *ad = arr->nonSmartCopy();
    ad->setStatic();
    ad->onSetEvalScalar();
    acc->second = ad;
  }
  return acc->second;
}