Merge pull request #2775 from SamTebbs33/alignment-docs

Add doc comments to alignment functions
This commit is contained in:
Andrew Kelley 2019-06-27 20:37:28 -04:00 committed by GitHub
commit ae72a98224
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1481,6 +1481,7 @@ test "subArrayPtr" {
}
/// Round an address up to the nearest aligned address
/// The alignment must be a power of 2 and greater than 0.
pub fn alignForward(addr: usize, alignment: usize) usize {
return alignBackward(addr + (alignment - 1), alignment);
}
@ -1500,13 +1501,18 @@ test "alignForward" {
testing.expect(alignForward(17, 8) == 24);
}
/// Round an address up to the previous aligned address
/// The alignment must be a power of 2 and greater than 0.
pub fn alignBackward(addr: usize, alignment: usize) usize {
assert(@popCount(usize, alignment) == 1);
// 000010000 // example addr
// 000001111 // subtract 1
// 111110000 // binary not
return addr & ~(alignment - 1);
}
/// Given an address and an alignment, return true if the address is a multiple of the alignment
/// The alignment must be a power of 2 and greater than 0.
pub fn isAligned(addr: usize, alignment: usize) bool {
return alignBackward(addr, alignment) == addr;
}