extract bucket definitions from template
This commit is contained in:
parent
edd1f308ce
commit
1d5e7212fd
@ -15,11 +15,11 @@
|
||||
|
||||
|
||||
// separate memory management system for executable code; isn't garbage-collected
|
||||
EmptyValue* mmX_buckets[64];
|
||||
#define BSZ(X) (1ull<<(X))
|
||||
#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull)))
|
||||
#define MMI(X) X
|
||||
#define BN(X) mmX_##X
|
||||
#define buckets mmX_buckets
|
||||
#include "../opt/mm_buddyTemplate.h"
|
||||
#define MMI(X) X
|
||||
#define ALSZ 17
|
||||
|
||||
@ -1,26 +1,24 @@
|
||||
#include "gc.c"
|
||||
|
||||
#ifdef OBJ_COUNTER
|
||||
u64 currObjCounter;
|
||||
u64 currObjCounter;
|
||||
#endif
|
||||
|
||||
EmptyValue* b1_buckets[64];
|
||||
#define ALSZ 20
|
||||
#define BSZ(X) (1ull<<(X))
|
||||
#define MMI(X) X
|
||||
#define BN(X) b1_##X
|
||||
#define buckets b1_buckets
|
||||
#include "mm_buddyTemplate.c"
|
||||
#undef buckets
|
||||
#undef BN
|
||||
#undef BSZ
|
||||
|
||||
EmptyValue* b3_buckets[64];
|
||||
#define ALSZ 20
|
||||
#define BSZ(X) (3ull<<(X))
|
||||
#define MMI(X) ((X)|64)
|
||||
#define BN(X) b3_##X
|
||||
#define buckets b3_buckets
|
||||
#include "mm_buddyTemplate.c"
|
||||
#undef buckets
|
||||
#undef BN
|
||||
#undef BSZ
|
||||
|
||||
|
||||
@ -6,28 +6,26 @@ struct EmptyValue { // needs set: mmInfo; type=t_empty; next; everything else ca
|
||||
struct Value;
|
||||
EmptyValue* next;
|
||||
};
|
||||
#ifdef OBJ_COUNTER
|
||||
extern u64 currObjCounter;
|
||||
#endif
|
||||
extern u64 mm_heapAlloc;
|
||||
extern u64 mm_heapMax;
|
||||
|
||||
extern EmptyValue* b1_buckets[64];
|
||||
#define BSZ(X) (1ull<<(X))
|
||||
#define BN(X) b1_##X
|
||||
#define buckets b1_buckets
|
||||
#include "mm_buddyTemplate.h"
|
||||
#undef buckets
|
||||
#undef BN
|
||||
#undef BSZ
|
||||
|
||||
extern EmptyValue* b3_buckets[64];
|
||||
#define BSZ(X) (3ull<<(X))
|
||||
#define BN(X) b3_##X
|
||||
#define buckets b3_buckets
|
||||
#include "mm_buddyTemplate.h"
|
||||
#undef buckets
|
||||
#undef BN
|
||||
#undef BSZ
|
||||
|
||||
#ifdef OBJ_COUNTER
|
||||
extern u64 currObjCounter;
|
||||
#endif
|
||||
|
||||
static void* mm_alloc(usz sz, u8 type) {
|
||||
assert(sz>=16);
|
||||
|
||||
@ -1,15 +1,14 @@
|
||||
#include "gc.c"
|
||||
|
||||
#ifdef OBJ_COUNTER
|
||||
u64 currObjCounter;
|
||||
u64 currObjCounter;
|
||||
#endif
|
||||
|
||||
EmptyValue* mm_buckets[64];
|
||||
#define ALSZ 20
|
||||
#define BSZ(X) (1ull<<(X))
|
||||
#define MMI(X) X
|
||||
#define BN(X) mm_##X
|
||||
|
||||
#include "mm_buddyTemplate.c"
|
||||
|
||||
#undef BN
|
||||
#undef BSZ
|
||||
|
||||
@ -6,17 +6,17 @@ struct EmptyValue { // needs set: mmInfo; type=t_empty; next; everything else ca
|
||||
struct Value;
|
||||
EmptyValue* next;
|
||||
};
|
||||
#ifdef OBJ_COUNTER
|
||||
extern u64 currObjCounter;
|
||||
#endif
|
||||
extern u64 mm_heapAlloc;
|
||||
extern u64 mm_heapMax;
|
||||
|
||||
extern EmptyValue* mm_buckets[64];
|
||||
#define BSZ(X) (1ull<<(X))
|
||||
#define BN(X) mm_##X
|
||||
|
||||
#include "mm_buddyTemplate.h"
|
||||
|
||||
#ifdef OBJ_COUNTER
|
||||
extern u64 currObjCounter;
|
||||
#endif
|
||||
|
||||
#define BSZI(X) ((u8)(64-__builtin_clzl((X)-1ull)))
|
||||
static void* mm_alloc(usz sz, u8 type) {
|
||||
|
||||
@ -1,7 +1,8 @@
|
||||
#define AllocInfo BN(AllocInfo)
|
||||
#define al BN(al)
|
||||
#define alCap BN(alCap)
|
||||
#define alSize BN(alSize)
|
||||
#define buckets BN(buckets)
|
||||
#define al BN(al)
|
||||
#define alCap BN(alCap)
|
||||
#define alSize BN(alSize)
|
||||
#define str(X) #X
|
||||
#ifndef PROT
|
||||
#define PROT PROT_READ|PROT_WRITE
|
||||
@ -10,7 +11,6 @@
|
||||
#define FLAGS MAP_NORESERVE|MAP_PRIVATE|MAP_ANON
|
||||
#endif
|
||||
|
||||
EmptyValue* buckets[64];
|
||||
typedef struct AllocInfo {
|
||||
Value* p;
|
||||
u64 sz;
|
||||
@ -83,6 +83,7 @@ void BN(forHeap)(V2v f) {
|
||||
#undef FLAGS
|
||||
#undef PROT
|
||||
#undef AllocInfo
|
||||
#undef buckets
|
||||
#undef al
|
||||
#undef alSize
|
||||
#undef alCap
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
extern EmptyValue* buckets[64];
|
||||
|
||||
#define buckets BN(buckets)
|
||||
static void BN(free)(Value* x) {
|
||||
onFree(x);
|
||||
#ifdef USE_VALGRIND
|
||||
@ -41,3 +40,4 @@ static void* BN(allocL)(i64 bucket, u8 type) {
|
||||
#endif
|
||||
return x;
|
||||
}
|
||||
#undef buckets
|
||||
|
||||
Loading…
Reference in New Issue
Block a user