VM: simpler code for reallot_array

char-rename
Björn Lindqvist 2016-10-08 07:10:26 +02:00
parent a102f7ad5d
commit 8cacf7bf8d
1 changed files with 11 additions and 12 deletions

View File

@ -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;
}
}