Ejemplo n.º 1
0
ProxyArray* ProxyArray::reseatable(ArrayData* oldArr, ArrayData* newArr) {
  if (innerArr(oldArr) != newArr) {
    decRefArr(innerArr(oldArr));
    newArr->incRefCount();
    asProxyArray(oldArr)->m_ad = newArr;
  }
  return asProxyArray(oldArr);
}
Ejemplo n.º 2
0
ArrayData*
ProxyArray::PlusEq(ArrayData* ad, const ArrayData* elems) {
  auto const ret = ad->hasMultipleRefs() ? Make(innerArr(ad))
                                         : asProxyArray(ad);
  auto r = ret->m_ad->plusEq(elems);
  return reseatable(ad, r);
}
Ejemplo n.º 3
0
void ProxyArray::reseatable(const ArrayData* oldArr, ArrayData* newArr) {
  if (innerArr(oldArr) != newArr) {
    auto old = innerArr(oldArr);
    asProxyArray(oldArr)->m_ref->tv()->m_data.parr = newArr;
    decRefArr(old);
  }
}
Ejemplo n.º 4
0
void ProxyArray::reseatable(const ArrayData* oldArr, ArrayData* newArr) {
  if (innerArr(oldArr) != newArr) {
    decRefArr(innerArr(oldArr));
    newArr->incRefCount();
    asProxyArray(oldArr)->m_ref->tv()->m_data.parr = newArr;
  }
}
Ejemplo n.º 5
0
void ProxyArray::Release(ArrayData*ad) {
  decRefRef(asProxyArray(ad)->m_ref);
  MM().objFree(ad, sizeof(ProxyArray));
}
Ejemplo n.º 6
0
ArrayData* ProxyArray::innerArr(const ArrayData* ad) {
  return asProxyArray(ad)->m_ref->tv()->m_data.parr;
}
Ejemplo n.º 7
0
ArrayData* ProxyArray::innerArr(const ArrayData* ad) {
  return asProxyArray(ad)->m_ad;
}