+#if defined(STM)||defined(THREADS)
+#define MEMORYBLOCK 65536
+void * helper(struct garbagelist *, int);
+void * mygcmalloc(struct garbagelist * stackptr, int size) {
+ if ((size&7)!=0)
+ size=(size&~7)+8;
+ if (memorybase==NULL||size>(memorytop-memorybase)) {
+ int toallocate=(size>MEMORYBLOCK)?size:MEMORYBLOCK;
+ memorybase=helper(stackptr, toallocate);
+ memorytop=memorybase+toallocate;
+ }
+ char *retvalue=memorybase;
+ memorybase+=size;
+ return retvalue;
+}
+
+void * helper(struct garbagelist * stackptr, int size) {
+#else