diff options
| author | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2024-06-06 14:42:19 +0200 |
|---|---|---|
| committer | Jeroen van Rijn <Kelimion@users.noreply.github.com> | 2024-06-06 14:42:19 +0200 |
| commit | 72f6b5479dd77a69be78faac2afaee7c3a1c2a6d (patch) | |
| tree | 38fb73da5700903cc75aee8095c0a3945daa48a5 /core/mem/tlsf | |
| parent | 0b6d73c86ed37ec9b23bcebb291644d7504dd344 (diff) | |
Fix `fls_uint`
Diffstat (limited to 'core/mem/tlsf')
| -rw-r--r-- | core/mem/tlsf/tlsf_internal.odin | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/core/mem/tlsf/tlsf_internal.odin b/core/mem/tlsf/tlsf_internal.odin index 1dc9c5da7..9c8f5c6d8 100644 --- a/core/mem/tlsf/tlsf_internal.odin +++ b/core/mem/tlsf/tlsf_internal.odin @@ -126,10 +126,14 @@ ffs :: proc "contextless" (word: u32) -> (bit: i32) { fls :: proc "contextless" (word: u32) -> (bit: i32) { return i32(31 - intrinsics.count_leading_zeros(word)) } -@(require_results) -fls_uint :: proc "contextless" (size: uint) -> (bit: i32) { - N :: size_of(uintptr)-1 - return i32(N - intrinsics.count_leading_zeros(size)) + +when size_of(uintptr) == 8 { + @(require_results) + fls_uint :: proc "contextless" (size: uint) -> (bit: i32) { + return i32(63 - intrinsics.count_leading_zeros(size)) + } +} else { + fls_uint :: fls_u32 } @(require_results) |