Exemple #1
0
oop_t MemObj::clone(MemObj** addrp) {
  if (is_byteVector()) {
    untested("calling regular clone() on a byte vector");
    ByteVectorObj* this_bv = (ByteVectorObj*) this;
    return this_bv->clone_and_resize(this_bv->indexableSize(), 0, (ByteVectorObj**)addrp);
  }
  
  return clone_oops_and_allocate_bytes(total_size_in_oops(), NO_BYTES_PART, addrp);
}
Exemple #2
0
oop_t ByteVectorObj::clone_and_resize(smi new_indexable_size, char fill, ByteVectorObj** addrp, bool shouldFill) {
  ByteVectorObj* new_addr;
  char* new_bytes;
  oop_t new_bv = clone_oops_and_allocate_bytes(indexableOrigin(), new_indexable_size, (MemObj**) &new_addr, &new_bytes);
  
  new_addr->set_indexableSize(new_indexable_size);
  copy_bytes_to(new_bytes, new_indexable_size, fill, shouldFill);
  if (addrp) *addrp = new_addr;
  
  assert(new_addr->is_byteVector());
  return new_bv;
}