VM: simpler code for reallot_array
parent
a102f7ad5d
commit
8cacf7bf8d
|
@ -38,19 +38,18 @@ Array* factor_vm::reallot_array(Array* array_, cell capacity) {
|
|||
if (reallot_array_in_place_p(array.untagged(), capacity)) {
|
||||
array->capacity = tag_fixnum(capacity);
|
||||
return array.untagged();
|
||||
} else {
|
||||
cell to_copy = array_capacity(array.untagged());
|
||||
if (capacity < to_copy)
|
||||
to_copy = capacity;
|
||||
|
||||
Array* new_array = allot_uninitialized_array<Array>(capacity);
|
||||
|
||||
memcpy(new_array + 1, array.untagged() + 1, to_copy * Array::element_size);
|
||||
memset((char*)(new_array + 1) + to_copy * Array::element_size, 0,
|
||||
(capacity - to_copy) * Array::element_size);
|
||||
|
||||
return new_array;
|
||||
}
|
||||
cell to_copy = array_capacity(array.untagged());
|
||||
if (capacity < to_copy)
|
||||
to_copy = capacity;
|
||||
|
||||
Array* new_array = allot_uninitialized_array<Array>(capacity);
|
||||
|
||||
memcpy(new_array + 1, array.untagged() + 1, to_copy * Array::element_size);
|
||||
memset((char*)(new_array + 1) + to_copy * Array::element_size, 0,
|
||||
(capacity - to_copy) * Array::element_size);
|
||||
|
||||
return new_array;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue