authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-01-03 00:29:31-05:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-02-21 00:27:12-05:00
log828ac637b2703bfd3e40316a28e1f6b8315c6ed1
tree10a8d5b026422f48dd5ffeffc1a678be2906c07f
parentb76fed82061823fb1ed1f4ab81296135858ce26c

MultiArrayList: delete pessimizing vector usage

By factoring out the comptime parts of this computation, vectors are no longer useful in this function.

1 files changed, 3 insertions(+), 9 deletions(-)

lib/std/multi_array_list.zig+3-9
...@@ -433,15 +433,9 @@ pub fn MultiArrayList(comptime S: type) type {...@@ -433,15 +433,9 @@ pub fn MultiArrayList(comptime S: type) type {
433 }433 }
434434
435 fn capacityInBytes(capacity: usize) usize {435 fn capacityInBytes(capacity: usize) usize {
436 if (builtin.zig_backend == .stage2_c) {436 comptime var elem_bytes: usize = 0;
437 var bytes: usize = 0;437 inline for (sizes.bytes) |size| elem_bytes += size;
438 for (sizes.bytes) |size| bytes += size * capacity;438 return elem_bytes * capacity;
439 return bytes;
440 } else {
441 const sizes_vector: @Vector(sizes.bytes.len, usize) = sizes.bytes;
442 const capacity_vector = @splat(sizes.bytes.len, capacity);
443 return @reduce(.Add, capacity_vector * sizes_vector);
444 }
445 }439 }
446440
447 fn allocatedBytes(self: Self) []align(@alignOf(S)) u8 {441 fn allocatedBytes(self: Self) []align(@alignOf(S)) u8 {