Change the local hashtable for recording the pointer mapping info used in the gc...
[IRC.git] / Robust / src / Runtime / mem.h
1 #ifndef MEMH
2 #define MEMH
3 #include <stdlib.h>
4 #ifndef RAW
5 #include <stdio.h>
6 #endif
7
8 #ifdef BOEHM_GC
9 #include "gc.h"
10 #define FREEMALLOC(x) GC_malloc(x)
11 #define RUNMALLOC(x) GC_malloc(x)
12 #define RUNFREE(x)
13 #else
14 #ifdef PRECISE_GC
15 #include "garbage.h"
16 #define RUNMALLOC(x) calloc(1,x)
17 #define RUNFREE(x) free(x)
18 #else
19 #ifdef MULTICORE
20 void * mycalloc(int m, int size);
21 void * mycalloc_i(int m, int size);
22 void myfree(void * ptr);
23 #define RUNMALLOC(x) mycalloc(1,x) // handle interruption inside
24 #define RUNMALLOC_I(x) mycalloc_i(1,x) //with interruption blocked beforehand
25 #define RUNFREE(x) myfree(x)
26 #ifdef MULTICORE_GC
27 #include "multicoregc.h"
28 void * mycalloc_share(struct garbagelist * stackptr, int m, int size);
29 void * mycalloc_share_ngc(int m, int size);
30 void * mycalloc_share_ngc_I(int m, int size);
31 void mycalloc_free_ngc(void * ptr);
32 void mycalloc_free_ngc_I(void * ptr);
33 #define FREEMALLOC(s, x) mycalloc_share((s),1,(x))
34 #define FREEMALLOC_NGC(x) mycalloc_share_ngc(1, (x))
35 #define FREEMALLOC_NGC_I(x) mycalloc_share_ngc_I(1, (x))
36 #define FREE_NGC(x) mycalloc_free_ngc(x)
37 #define FREE_NGC_I(x) mycalloc_free_ngc_I(x)
38 #else
39 void * mycalloc_share(int m, int size);
40 #define FREEMALLOC(x) mycalloc_share(1,x)
41 #endif // #ifdef MULTICORE_GC
42 //#define PTR(x) (32+(x-1)&~31)
43 #endif  // #ifdef MULTICORE
44 #endif  // #ifdef PRECISE_GC
45 #endif  // #ifdef BOEHM_GC
46 #endif  // #ifdef MEMH