From d063e83a8d0f9c9808df926c1d9e41ed7da0aa8d Mon Sep 17 00:00:00 2001 From: dzaima Date: Mon, 5 Jul 2021 01:22:49 +0300 Subject: [PATCH] apparently BSZI is barely used --- src/jit/nvm.c | 3 ++- src/jit/nvm_x86_64.c | 3 +-- src/opt/mm_2buddy.c | 4 ---- src/opt/mm_2buddy.h | 4 ---- src/opt/mm_buddy.c | 2 -- src/opt/mm_buddy.h | 4 ++-- src/vm.h | 2 +- 7 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/jit/nvm.c b/src/jit/nvm.c index dda6fcac..20db1369 100644 --- a/src/jit/nvm.c +++ b/src/jit/nvm.c @@ -1,4 +1,5 @@ -#if defined(__x86_64) || defined(__amd64__) +#include "../core.h" +#if (defined(__x86_64) || defined(__amd64__)) && MM!=0 #include "nvm_x86_64.c" #else #include "nvm_placeholder.c" diff --git a/src/jit/nvm_x86_64.c b/src/jit/nvm_x86_64.c index 71180e07..0663f993 100644 --- a/src/jit/nvm_x86_64.c +++ b/src/jit/nvm_x86_64.c @@ -26,10 +26,9 @@ #define PROT PROT_READ|PROT_WRITE|PROT_EXEC #define FLAGS MAP_NORESERVE|MAP_PRIVATE|MAP_ANON|MAP_32BIT #include "../opt/mm_buddyTemplate.c" -static void* mmX_allocN(usz sz, u8 type) { assert(sz>=16); return mmX_allocL(BSZI(sz), type); } +static void* mmX_allocN(usz sz, u8 type) { assert(sz>=16); return mmX_allocL(64-__builtin_clzl(sz-1ull), type); } #undef mmX_buckets #undef BN -#undef BSZI #undef BSZ diff --git a/src/opt/mm_2buddy.c b/src/opt/mm_2buddy.c index d5a43707..651b9736 100644 --- a/src/opt/mm_2buddy.c +++ b/src/opt/mm_2buddy.c @@ -6,7 +6,6 @@ u64 currObjCounter; #define ALSZ 20 #define BSZ(X) (1ull<<(X)) -#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull))) #define MMI(X) X #define BN(X) b1_##X #define buckets b1_buckets @@ -14,11 +13,9 @@ u64 currObjCounter; #undef buckets #undef BN #undef BSZ -#undef BSZI #define ALSZ 20 #define BSZ(X) (3ull<<(X)) -#define BSZI(X) ((u8)(64-__builtin_clzl((X)/3-1ull))) #define MMI(X) ((X)|64) #define BN(X) b3_##X #define buckets b3_buckets @@ -26,7 +23,6 @@ u64 currObjCounter; #undef buckets #undef BN #undef BSZ -#undef BSZI void mm_forHeap(V2v f) { b1_forHeap(f); diff --git a/src/opt/mm_2buddy.h b/src/opt/mm_2buddy.h index c7c4cb4c..8ffe93d4 100644 --- a/src/opt/mm_2buddy.h +++ b/src/opt/mm_2buddy.h @@ -10,7 +10,6 @@ extern u64 mm_heapAlloc; extern u64 mm_heapMax; #define BSZ(X) (1ull<<(X)) -#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull))) #define MMI(X) X #define BN(X) b1_##X #define buckets b1_buckets @@ -18,10 +17,8 @@ extern u64 mm_heapMax; #undef buckets #undef BN #undef BSZ -#undef BSZI #define BSZ(X) (3ull<<(X)) -#define BSZI(X) ((u8)(64-__builtin_clzl((X)/3-1ull))) #define MMI(X) ((X)|64) #define BN(X) b3_##X #define buckets b3_buckets @@ -29,7 +26,6 @@ extern u64 mm_heapMax; #undef buckets #undef BN #undef BSZ -#undef BSZI #ifdef OBJ_COUNTER extern u64 currObjCounter; diff --git a/src/opt/mm_buddy.c b/src/opt/mm_buddy.c index 7f91cc3d..19ab5261 100644 --- a/src/opt/mm_buddy.c +++ b/src/opt/mm_buddy.c @@ -6,7 +6,6 @@ u64 currObjCounter; #define ALSZ 20 #define BSZ(X) (1ull<<(X)) -#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull))) #define MMI(X) X #define BN(X) mm_##X @@ -14,4 +13,3 @@ u64 currObjCounter; #undef BN #undef BSZ -#undef BSZI diff --git a/src/opt/mm_buddy.h b/src/opt/mm_buddy.h index b9ab3897..7af25684 100644 --- a/src/opt/mm_buddy.h +++ b/src/opt/mm_buddy.h @@ -10,7 +10,6 @@ extern u64 mm_heapAlloc; extern u64 mm_heapMax; #define BSZ(X) (1ull<<(X)) -#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull))) #define MMI(X) X #define BN(X) mm_##X @@ -20,6 +19,7 @@ extern u64 mm_heapMax; extern u64 currObjCounter; #endif +#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull))) static void* mm_alloc(usz sz, u8 type) { assert(sz>=16); onAlloc(sz, type); @@ -38,6 +38,6 @@ static u64 mm_size(Value* x) { } void mm_forHeap(V2v f); +#undef BSZI #undef BN #undef BSZ -#undef BSZI diff --git a/src/vm.h b/src/vm.h index c4885303..6025a21e 100644 --- a/src/vm.h +++ b/src/vm.h @@ -1,7 +1,7 @@ #pragma once -#if defined(__x86_64) || defined(__amd64__) +#if (defined(__x86_64) || defined(__amd64__)) && MM!=0 #ifndef JIT_START #define JIT_START 2 // number of calls for when to start JITting. -1: never JIT; 0: JIT everything, n: JIT after n non-JIT invocations; max ¯1+2⋆16 #endif