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