changes for multicore GC. Chang the lock mechanism for Tilera and messages for GC.
[IRC.git] / Robust / src / Runtime / mem.c
1 #include "mem.h"
2
3 #ifdef MULTICORE
4 #include "runtime.h"
5 #include "runtime_arch.h"
6
7 void * mycalloc(int m, int size) {
8   void * p = NULL;
9   int isize = size; //2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
10   BAMBOO_START_CRITICAL_SECTION_MEM();
11   p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
12   if(p == NULL) {
13           BAMBOO_EXIT(0xa024);
14   }
15   BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
16   //return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
17   return p;
18 }
19
20 void * mycalloc_share(int m, int size) {
21   void * p = NULL;
22   int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
23   BAMBOO_START_CRITICAL_SECTION_MEM();
24   p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
25   if(p == NULL) {
26           BAMBOO_EXIT(0xa025);
27   }
28   BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
29   return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
30 }
31
32 void * mycalloc_i(int m, int size) {
33   void * p = NULL;
34   int isize = size; //2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
35   p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
36   if(p == NULL) {
37           BAMBOO_EXIT(0xa026);
38   }
39   return p;
40   //return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
41 }
42
43 void myfree(void * ptr) {
44   BAMBOO_LOCAL_MEM_FREE(ptr);
45   return;
46 }
47
48 #endif