Example #1
0
void BitVector::setSlow(const BitVector& other) {
  uintptr_t newBitsOrPointer;
  if (other.isInline()) {
    newBitsOrPointer = other.m_bitsOrPointer;
  } else {
    OutOfLineBits* newOutOfLineBits = OutOfLineBits::create(other.size());
    memcpy(newOutOfLineBits->bits(), other.bits(), byteCount(other.size()));
    newBitsOrPointer = bitwiseCast<uintptr_t>(newOutOfLineBits) >> 1;
  }
  if (!isInline())
    OutOfLineBits::destroy(outOfLineBits());
  m_bitsOrPointer = newBitsOrPointer;
}