make compiler work on mac...
authorbdemsky <bdemsky>
Wed, 13 Apr 2011 08:03:44 +0000 (08:03 +0000)
committerbdemsky <bdemsky>
Wed, 13 Apr 2011 08:03:44 +0000 (08:03 +0000)
Robust/src/Runtime/garbage.c
Robust/src/Runtime/thread.c

index ad9ea2c292467c26a77fc834c56b14350b67bddb..35801dc3347965db89d57113de34134bb53ab867 100644 (file)
@@ -871,12 +871,8 @@ void stopforgc(struct garbagelist * ptr) {
 #ifndef MAC
   litem.stackptr=ptr;
 #if defined(STM)||defined(THREADS)||defined(MLP)
-#ifdef MAC
-  litem.base=pthread_getspecific(memorybasekey);
-#else
   litem.base=&memorybase;
 #endif
-#endif
 #ifdef STM
   litem.tc_size=c_size;
   litem.tc_table=&c_table;
@@ -891,6 +887,9 @@ void stopforgc(struct garbagelist * ptr) {
   //handle MAC
   struct listitem *litem=pthread_getspecific(litemkey);
   litem->stackptr=ptr;
+#if defined(STM)||defined(THREADS)||defined(MLP)
+  litem->base=pthread_getspecific(memorybasekey);
+#endif
 #endif
   pthread_mutex_lock(&gclistlock);
   listcount++;
@@ -935,6 +934,10 @@ void * mygcmalloc(struct garbagelist * stackptr, int size) {
   }
   char *retvalue=memorybase;
   memorybase+=size;
+#ifdef MAC
+  *(char **)pthread_getspecific(memorybasekey)=memorybase;
+  *(char **)pthread_getspecific(memorytopkey)=memorytop;
+#endif
   return retvalue;
 }
 
index ba0d9b53a3e241d827dfa982384aeb05ff402bb9..ef75f1c456e2f88b13324b288cc12fa792ed5ff9 100644 (file)
@@ -190,6 +190,7 @@ void initializethreads() {
   pthread_key_create(&threadlocks, NULL);
   pthread_key_create(&memorybasekey, NULL);
   pthread_key_create(&memorytopkey, NULL);
+  pthread_key_create(&litemkey, NULL);
 #endif
   processOptions();
   initializeexithandler();