reorganize multicore version runtime codes for easy support of new platforms
[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 #ifdef THREADSIMULATE
21 #define FREEMALLOC(x) calloc(1,x)
22 #define RUNMALLOC(x) calloc(1,x)
23 #define RUNFREE(x) free(x)
24 //#define PTR(x) (x)
25 #else
26 void * mycalloc(int m, int size);
27 void * mycalloc_i(int m, int size);
28 void myfree(void * ptr);
29 #define FREEMALLOC(x) mycalloc(1,x)
30 #define RUNMALLOC(x) mycalloc(1,x) // handle interruption inside
31 #define RUNMALLOC_I(x) mycalloc_i(1,x) // with interruption blocked beforehand
32 #define RUNFREE(x) myfree(x);
33 //#define PTR(x) (32+(x-1)&~31)
34 #endif  // #ifdef THREADSIMULATE
35 #endif  // #ifdef MULTICORE
36 #endif  // #ifdef PRECISE_GC
37 #endif  // #ifdef BOEHM_GC
38 #endif  // #ifdef MEMH