aboutsummaryrefslogtreecommitdiff
path: root/lib/std/fifo.zig
diff options
context:
space:
mode:
Diffstat (limited to 'lib/std/fifo.zig')
-rw-r--r--lib/std/fifo.zig26
1 files changed, 12 insertions, 14 deletions
diff --git a/lib/std/fifo.zig b/lib/std/fifo.zig
index a6736e41a7..0861e19d14 100644
--- a/lib/std/fifo.zig
+++ b/lib/std/fifo.zig
@@ -86,19 +86,17 @@ pub fn LinearFifo(
pub fn realign(self: *Self) void {
if (self.buf.len - self.head >= self.count) {
- // this copy overlaps
- mem.copy(T, self.buf[0..self.count], self.buf[self.head..][0..self.count]);
+ mem.copyForwards(T, self.buf[0..self.count], self.buf[self.head..][0..self.count]);
self.head = 0;
} else {
var tmp: [mem.page_size / 2 / @sizeOf(T)]T = undefined;
while (self.head != 0) {
- const n = math.min(self.head, tmp.len);
+ const n = @min(self.head, tmp.len);
const m = self.buf.len - n;
- mem.copy(T, tmp[0..n], self.buf[0..n]);
- // this middle copy overlaps; the others here don't
- mem.copy(T, self.buf[0..m], self.buf[n..][0..m]);
- mem.copy(T, self.buf[m..], tmp[0..n]);
+ @memcpy(tmp[0..n], self.buf[0..n]);
+ mem.copyForwards(T, self.buf[0..m], self.buf[n..][0..m]);
+ @memcpy(self.buf[m..][0..n], tmp[0..n]);
self.head -= n;
}
}
@@ -223,8 +221,8 @@ pub fn LinearFifo(
while (dst_left.len > 0) {
const slice = self.readableSlice(0);
if (slice.len == 0) break;
- const n = math.min(slice.len, dst_left.len);
- mem.copy(T, dst_left, slice[0..n]);
+ const n = @min(slice.len, dst_left.len);
+ @memcpy(dst_left[0..n], slice[0..n]);
self.discard(n);
dst_left = dst_left[n..];
}
@@ -289,8 +287,8 @@ pub fn LinearFifo(
while (src_left.len > 0) {
const writable_slice = self.writableSlice(0);
assert(writable_slice.len != 0);
- const n = math.min(writable_slice.len, src_left.len);
- mem.copy(T, writable_slice, src_left[0..n]);
+ const n = @min(writable_slice.len, src_left.len);
+ @memcpy(writable_slice[0..n], src_left[0..n]);
self.update(n);
src_left = src_left[n..];
}
@@ -354,11 +352,11 @@ pub fn LinearFifo(
const slice = self.readableSliceMut(0);
if (src.len < slice.len) {
- mem.copy(T, slice, src);
+ @memcpy(slice[0..src.len], src);
} else {
- mem.copy(T, slice, src[0..slice.len]);
+ @memcpy(slice, src[0..slice.len]);
const slice2 = self.readableSliceMut(slice.len);
- mem.copy(T, slice2, src[slice.len..]);
+ @memcpy(slice2[0 .. src.len - slice.len], src[slice.len..]);
}
}