5 #include "runtime_arch.h"
8 void * mycalloc_share(struct garbagelist * stackptr,
12 //int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
13 int isize = (size & (~(BAMBOO_CACHE_LINE_MASK))) + (BAMBOO_CACHE_LINE_SIZE);
16 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
17 p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
19 // no more global shared memory
20 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
27 // no more global shared memory
31 // try to malloc again
34 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
36 (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
37 BAMBOO_MEMSET_WH(p, -2, (alignedp - p));
38 BAMBOO_MEMSET_WH(alignedp + size, -2, p + isize - alignedp - size);
42 void * mycalloc_share(int m,
45 //int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
46 int isize = (size & (~(BAMBOO_CACHE_LINE_MASK))) + (BAMBOO_CACHE_LINE_SIZE);
47 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
48 p = BAMBOO_SHARE_MEM_CALLOC_I(m, isize); // calloc(m, isize);
50 // no more global shared memory
53 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
55 (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
59 void * mycalloc(int m,
63 BAMBOO_ENTER_RUNTIME_MODE_FROM_CLIENT();
65 extern bool gc_localheap_s;
67 p = gc_localheap_s ? BAMBOO_LOCAL_MEM_CALLOC_S(m, isize) :
68 BAMBOO_LOCAL_MEM_CALLOC(m, isize);
70 p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
75 gc_localheap_s = true;
81 BAMBOO_ENTER_CLIENT_MODE_FROM_RUNTIME();
86 void * mycalloc_i(int m,
91 extern bool gc_localheap_s;
93 p = gc_localheap_s ? BAMBOO_LOCAL_MEM_CALLOC_S(m, isize) :
94 BAMBOO_LOCAL_MEM_CALLOC(m, isize);
96 p = BAMBOO_LOCAL_MEM_CALLOC(m, isize); // calloc(m, isize);
100 if(!gc_localheap_s) {
101 gc_localheap_s = true;
110 void myfree(void * ptr) {
112 if(ptr >= BAMBOO_LOCAL_HEAP_START_VA ) {
114 BAMBOO_LOCAL_MEM_FREE(ptr);
116 } else if(ptr >= BAMBOO_LOCAL_HEAP_START_VA_S) {
117 BAMBOO_LOCAL_MEM_FREE_S(ptr);