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)) {
|
if (reallot_array_in_place_p(array.untagged(), capacity)) {
|
||||||
array->capacity = tag_fixnum(capacity);
|
array->capacity = tag_fixnum(capacity);
|
||||||
return array.untagged();
|
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