5 #include "runtime_arch.h"
11 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
12 p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
16 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
21 void * mycalloc_share(struct garbagelist * stackptr,
25 int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
28 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
30 tprintf("ask for shared mem: %x \n", isize);
32 p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
34 tprintf("new obj in shared mem: %x, %x \n", p, isize);
37 // no more global shared memory
38 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
44 // no more global shared memory
48 // try to malloc again
51 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
53 (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
54 BAMBOO_MEMSET_WH(p, -2, (alignedp - p));
55 BAMBOO_MEMSET_WH(alignedp + size, -2, p + isize - alignedp - size);
59 void * mycalloc_share_ngc(int m,
62 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
64 tprintf("ask for shared mem: %x \n", size);
66 p = BAMBOO_SHARED_MEM_CALLOC_NGC_I(m, size); // calloc(m, isize);
68 printf("new obj in shared mem: %x, %x \n", p, size);
70 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
74 void * mycalloc_share_ngc_I(int m,
78 tprintf("ask for shared mem: %x \n", size);
80 p = BAMBOO_SHARED_MEM_CALLOC_NGC_I(m, size); // calloc(m, isize);
82 printf("new obj in shared mem: %x, %x \n", p, size);
87 void mycalloc_free_ngc(void * ptr) {
88 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
89 BAMBOO_SHARED_MEM_FREE_NGC_I(ptr);
90 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
93 void mycalloc_free_ngc_I(void * ptr) {
94 BAMBOO_SHARED_MEM_FREE_NGC_I(ptr);
97 void * mycalloc_share(int m,
100 int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
101 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
102 p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
104 // no more global shared memory
107 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
109 (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
113 void * mycalloc_i(int m,
118 tprintf("ask for local mem: %x \n", isize);
120 p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
122 tprintf("new obj in local mem: %x, %x \n", p, isize);
130 void myfree(void * ptr) {
131 BAMBOO_LOCAL_MEM_FREE(ptr);