]> git.ipfire.org Git - thirdparty/zstd.git/commitdiff
made ZSTD_isPower2() an inline function
authorYann Collet <cyan@fb.com>
Tue, 22 Oct 2024 22:12:46 +0000 (15:12 -0700)
committerYann Collet <cyan@fb.com>
Wed, 23 Oct 2024 18:50:57 +0000 (11:50 -0700)
lib/common/compiler.h
lib/compress/zstd_cwksp.h

index f4caeb5c0c7178bef4e64dd979506578f8cea249..b6cbcee0366edc8e83465ddc2cc294d804d09234 100644 (file)
 *  Alignment check
 *****************************************************************/
 
-#define ZSTD_IS_POWER_2(a) (((a) & ((a)-1)) == 0)
+/* @return 1 if @u is a 2^n value, 0 otherwise
+ * useful to check a value is valid for alignment restrictions */
+MEM_STATIC int ZSTD_isPower2(size_t u) {
+    return (u & (u-1)) == 0;
+}
 
 /* this test was initially positioned in mem.h,
  * but this file is removed (or replaced) for linux kernel
index dc0142098458e52f7548c86f477a9356cad32116..77715e22e533a69dd415429c0dbf5506f660c488 100644 (file)
@@ -208,7 +208,7 @@ MEM_STATIC void ZSTD_cwksp_assert_internal_consistency(ZSTD_cwksp* ws) {
  */
 MEM_STATIC size_t ZSTD_cwksp_align(size_t size, size_t align) {
     size_t const mask = align - 1;
-    assert(ZSTD_IS_POWER_2(align));
+    assert(ZSTD_isPower2(align));
     return (size + mask) & ~mask;
 }
 
@@ -266,7 +266,7 @@ MEM_STATIC size_t ZSTD_cwksp_slack_space_required(void) {
 MEM_STATIC size_t ZSTD_cwksp_bytes_to_align_ptr(void* ptr, const size_t alignBytes) {
     size_t const alignBytesMask = alignBytes - 1;
     size_t const bytes = (alignBytes - ((size_t)ptr & (alignBytesMask))) & alignBytesMask;
-    assert(ZSTD_IS_POWER_2(alignBytes));
+    assert(ZSTD_isPower2(alignBytes));
     assert(bytes < alignBytes);
     return bytes;
 }
@@ -536,7 +536,7 @@ MEM_STATIC void* ZSTD_cwksp_reserve_object_aligned(ZSTD_cwksp* ws, size_t byteSi
     void* const start = ZSTD_cwksp_reserve_object(ws, byteSize + surplus);
     if (start == NULL) return NULL;
     if (surplus == 0) return start;
-    assert(ZSTD_IS_POWER_2(alignment));
+    assert(ZSTD_isPower2(alignment));
     return (void*)(((size_t)start + surplus) & ~mask);
 }