Exemple #1
0
ArrayData* EmptyArray::SetWithRefInt(ArrayData* ad, int64_t k, TypedValue v) {
  if (checkHACRefBind() && tvIsReferenced(v)) {
    raiseHackArrCompatRefBind(k);
  }
  auto const lval = LvalIntImpl<false>(ad, k, ad->cowCheck());
  tvSetWithRef(v, lval);
  return lval.arr;
}
Exemple #2
0
ArrayData* EmptyArray::SetRefStr(ArrayData*,
                                 StringData* k,
                                 Variant& var,
                                 bool) {
  if (RuntimeOption::EvalHackArrCompatNotices) raiseHackArrCompatRefBind(k);
  auto ref = *var.asRef();
  tvIncRef(&ref);
  return EmptyArray::MakeMixed(k, ref).array;
}
Exemple #3
0
ArrayData* EmptyArray::SetRefInt(ArrayData*,
                                 int64_t k,
                                 Variant& var,
                                 bool) {
  if (RuntimeOption::EvalHackArrCompatNotices) raiseHackArrCompatRefBind(k);
  auto ref = *var.asRef();
  tvIncRef(&ref);
  auto const ret = k == 0 ? EmptyArray::MakePacked(ref)
                          : EmptyArray::MakeMixed(k, ref);
  return ret.array;
}
Exemple #4
0
ArrayLval EmptyArray::LvalStrRef(ArrayData* ad, StringData* k, bool copy) {
  if (RuntimeOption::EvalHackArrCompatNotices) raiseHackArrCompatRefBind(k);
  return LvalStr(ad, k, copy);
}
Exemple #5
0
ArrayLval EmptyArray::LvalIntRef(ArrayData* ad, int64_t k, bool copy) {
  if (RuntimeOption::EvalHackArrCompatNotices) raiseHackArrCompatRefBind(k);
  return LvalInt(ad, k, copy);
}
Exemple #6
0
arr_lval EmptyArray::LvalStrRef(ArrayData* ad, StringData* k, bool copy) {
  if (checkHACRefBind()) raiseHackArrCompatRefBind(k);
  return LvalStr(ad, k, copy);
}
Exemple #7
0
arr_lval EmptyArray::LvalIntRef(ArrayData* ad, int64_t k, bool copy) {
  if (checkHACRefBind()) raiseHackArrCompatRefBind(k);
  return LvalInt(ad, k, copy);
}