optimizations
authorbdemsky <bdemsky>
Fri, 17 Apr 2009 00:46:32 +0000 (00:46 +0000)
committerbdemsky <bdemsky>
Fri, 17 Apr 2009 00:46:32 +0000 (00:46 +0000)
Robust/src/Runtime/STM/stm.c
Robust/src/Runtime/STM/tm.h
Robust/src/Runtime/garbage.c

index 6543380c09741c962fdc04bf0387b1f97ab379d7..a891ee3b1c535bda1a550d795fbe959068bb0058 100644 (file)
@@ -186,10 +186,6 @@ __attribute__((pure)) void *transRead(void * oid) {
   objheader_t *objcopy;
   int size;
 
-  //quick case for new objects
-  if (((struct ___Object___ *)oid)->___objstatus___ & NEW)
-    return oid;
-
   /* Read from the main heap */
   //No lock for now
   objheader_t *header = (objheader_t *)(((char *)oid) - sizeof(objheader_t)); 
index 1da40df5e44f337d96c829f92a96b14f64c2ffc9..1631d66658c33d0cc07dc61611f3f432a10fb1af 100644 (file)
@@ -93,7 +93,8 @@ chashlistnode_t * cnodetmp=&c_table[(((unsigned INTPTR)inputvalue)&c_mask)>>4];
 do { \
   if (cnodetmp->key==inputvalue) {x=cnodetmp->val;break;} \
 cnodetmp=cnodetmp->next;\
- if (cnodetmp==NULL) {x=transRead(inputvalue); asm volatile("":"=m"(c_table),"=m"(c_mask));break;} \
+ if (cnodetmp==NULL) {if (((struct ___Object___*)inputvalue)->___objstatus___&NEW) {x=inputvalue;break;} else \
+{x=transRead(inputvalue); asm volatile("":"=m"(c_table),"=m"(c_mask));break;}} \
 } while(1);\
 }}
 
index 182342d160ab4128bb5adbef51c9c8fb33f60b7d..a565825da519676e6efe935a9794851bbdf99b08 100644 (file)
@@ -266,7 +266,7 @@ void enqueuetag(struct ___TagDescriptor___ *ptr) {
 }
 #endif
 
-#ifdef STM
+#if defined(STM)||defined(THREADS)
 __thread char * memorybase=NULL;
 __thread char * memorytop=NULL;
 #endif
@@ -637,7 +637,7 @@ void restartaftergc(struct listitem * litem) {
 }
 #endif
 
-#ifdef STM
+#if defined(STM)||defined(THREADS)
 #define MEMORYBLOCK 65536
 void * helper(struct garbagelist *, int);
 void * mygcmalloc(struct garbagelist * stackptr, int size) {