0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-06-25 05:18:23 +02:00

ircd::buffer: Minor qualifiers; minor cleanup.

This commit is contained in:
Jason Volk 2021-03-18 15:30:25 -07:00
parent 51d2ac4b33
commit 4ab97bd1a3
2 changed files with 30 additions and 9 deletions

View file

@ -62,25 +62,38 @@ ircd::buffer::copy(const mutable_buffer &dst,
inline char *&
__attribute__((always_inline))
ircd::buffer::copy(char *&dest,
char *const &stop,
ircd::buffer::copy(char *&__restrict__ dest,
char *const &__restrict__ stop,
const const_buffer &src)
{
assert(dest <= stop);
const size_t remain(std::distance(dest, stop));
const size_t cpsz(std::min(size(src), remain));
const auto *const __restrict__ srcp
{
data(src)
};
const size_t remain
(
std::distance(dest, stop)
);
const size_t cpsz
{
std::min(size(src), remain)
};
assert(!overlap(const_buffer(dest, cpsz), src));
assert(cpsz <= size(src));
assert(cpsz <= remain);
__builtin_memcpy(dest, data(src), cpsz);
__builtin_memcpy(dest, srcp, cpsz);
dest += cpsz;
assert(dest <= stop);
return dest;
}
inline char *&
ircd::buffer::copy(char *&dest,
char *const &stop,
ircd::buffer::copy(char *&__restrict__ dest,
char *const &__restrict__ stop,
char src)
{
assert(dest <= stop);

View file

@ -53,8 +53,16 @@ ircd::buffer::move(char *&dest,
const const_buffer &src)
{
assert(dest <= stop);
const size_t remain(std::distance(dest, stop));
const size_t cpsz(std::min(size(src), remain));
const size_t remain
(
std::distance(dest, stop)
);
const size_t cpsz
{
std::min(size(src), remain)
};
assert(cpsz <= size(src));
assert(cpsz <= remain);
__builtin_memmove(dest, data(src), cpsz);