bug fixes
authorbdemsky <bdemsky>
Wed, 8 Apr 2009 01:20:51 +0000 (01:20 +0000)
committerbdemsky <bdemsky>
Wed, 8 Apr 2009 01:20:51 +0000 (01:20 +0000)
Robust/src/Analysis/Locality/LocalityBinding.java
Robust/src/IR/Flat/BuildCode.java
Robust/src/Runtime/DSTM/interface/clookup.c
Robust/src/Runtime/garbage.c
Robust/src/Runtime/socket.c

index 7e1647a09b9e50ac9f6f624ccd4ea7764f2eba37..132bdfb68a82a4ff74608634e48544f4235aa672 100644 (file)
@@ -131,14 +131,10 @@ public class LocalityBinding {
     if (isglobal.length!=lb.isglobal.length)
       return false;
     for(int i=0; i<isglobal.length; i++)
-      if (!isglobal[i].equals(lb.isglobal[i]))
+      if (!equiv(isglobal[i],lb.isglobal[i]))
        return false;
 
-    if (isglobalthis==null) {
-      if (lb.isglobalthis!=null)
-       return false;
-    } else
-    if (!isglobalthis.equals(lb.isglobalthis))
+    if (!equiv(isglobalthis, lb.isglobalthis))
       return false;
     return (isatomic==lb.isatomic);
   }
index 07fab7f889b80ae5ed683c277eac7f6ce15e5688..0a9c17bfd3954be19dd64ab0ff758394a6c191f9 100644 (file)
@@ -2232,13 +2232,13 @@ public class BuildCode {
       boolean srcptr=fsfn.getSrc().getType().isPtr();
       String src=generateTemp(fm,fsfn.getSrc(),lb);
       String dst=generateTemp(fm,fsfn.getDst(),lb);
-      if (srcptr) {
+      if (srcptr&&!fsfn.getSrc().getType().isNull()) {
        output.println("{");
        output.println("int srcoid=("+src+"!=NULL?((int)"+src+"->"+oidstr+"):0);");
       }
       if (wb.needBarrier(fsfn))
        output.println("*((unsigned int *)&("+dst+"->___objstatus___))|=DIRTY;");
-      if (srcptr) {
+      if (srcptr&!fsfn.getSrc().getType().isNull()) {
        output.println("*((unsigned int *)&("+dst+"->"+ fsfn.getField().getSafeSymbol()+"))=srcoid;");
        output.println("}");
       } else {
@@ -2380,7 +2380,7 @@ public class BuildCode {
       //Transaction set element case
       if (wb.needBarrier(fsen))
        output.println("*((unsigned int *)&("+generateTemp(fm,fsen.getDst(),lb)+"->___objstatus___))|=DIRTY;");
-      if (fsen.getSrc().getType().isPtr()) {
+      if (fsen.getSrc().getType().isPtr()&&!fsen.getSrc().getType().isNull()) {
        output.println("{");
        String src=generateTemp(fm, fsen.getSrc(), lb);
        output.println("int srcoid=("+src+"!=NULL?((int)"+src+"->"+oidstr+"):0);");
index 28dda70287a7fd091607f5465fc1f2ce5cccb83a..d2ec50a9dd5c4efc807cc33cc1afc54a1e67b87e 100644 (file)
@@ -338,4 +338,5 @@ void t_chashDelete() {
     }
   }
   free(ptr);
+  c_table=NULL;
 }
index 0f6938bd379c0516fad19538f913f0ba8e2bb495..11984fa9243fd8d9b33f551c74436bca1a60f7d0 100644 (file)
@@ -183,7 +183,7 @@ void fixtable(chashlistnode_t ** tc_table, unsigned int tc_size) {
            ENQUEUE(objptr, *((void **)(((int)ptr)+offset)));
          }
        }
-      }      
+      }
 
       next = curr->next;
       index = (((unsigned int)key) & mask) >>1;
@@ -281,7 +281,8 @@ void collect(struct garbagelist * stackptr) {
     ENQUEUE(orig, listptr->locklist);
 #endif
 #ifdef STM
-    fixtable(listptr->tc_table, listptr->tc_size);
+    if ((*listptr->tc_table)!=NULL)
+      fixtable(listptr->tc_table, listptr->tc_size);
 #endif
     stackptr=listptr->stackptr;
     listptr=listptr->next;
index e9c3abef3a03955531d7f380d33a5c7ccc19df20..9adbd2e9f5aa675c8386ec571721e539f28ce157 100644 (file)
@@ -26,7 +26,7 @@ int CALL24(___Socket______nativeConnect____I__AR_B_I, int ___fd___, int ___port_
   sin.sin_family= AF_INET;
   sin.sin_port=htons(___port___);
   sin.sin_addr.s_addr=htonl(*(int *)(((char *)&VAR(___address___)->___length___)+sizeof(int)));
-#if defined(THREADS)||defined(DSTM)
+#if defined(THREADS)||defined(DSTM)||defined(STM)
 #ifdef PRECISE_GC
   struct listitem *tmp=stopforgc((struct garbagelist *)___params___);
 #endif
@@ -34,7 +34,7 @@ int CALL24(___Socket______nativeConnect____I__AR_B_I, int ___fd___, int ___port_
   do {
     rc = connect(___fd___, (struct sockaddr *) &sin, sizeof(sin));
   } while (rc<0 && errno==EINTR); /* repeat if interrupted */
-#if defined(THREADS)||defined(DSTM)
+#if defined(THREADS)||defined(DSTM)||defined(STM)
 #ifdef PRECISE_GC
   restartaftergc(tmp);
 #endif
@@ -293,7 +293,7 @@ int CALL02(___ServerSocket______nativeaccept____L___Socket___,struct ___ServerSo
   unsigned int sinlen=sizeof(sin);
   int fd=VAR(___this___)->___fd___;
   int newfd;
-#if defined(THREADS)||defined(DSTM)
+#if defined(THREADS)||defined(DSTM)||defined(STM)
 #ifdef PRECISE_GC
   struct listitem *tmp=stopforgc((struct garbagelist *)___params___);
 #endif
@@ -301,7 +301,7 @@ int CALL02(___ServerSocket______nativeaccept____L___Socket___,struct ___ServerSo
   newfd=accept(fd, (struct sockaddr *)&sin, &sinlen);
   int flag = 1;
   setsockopt(newfd, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(flag));
-#if defined(THREADS)||defined(DSTM)
+#if defined(THREADS)||defined(DSTM)||defined(STM)
 #ifdef PRECISE_GC
   restartaftergc(tmp);
 #endif
@@ -369,7 +369,7 @@ int CALL02(___Socket______nativeRead_____AR_B, struct ___Socket___ * ___this___,
 
   char * charstr=malloc(length);
 
-#if defined(THREADS)||defined(DSTM)
+#if defined(THREADS)||defined(DSTM)||defined(STM)
 #ifdef PRECISE_GC
   struct listitem *tmp=stopforgc((struct garbagelist *)___params___);
 #endif
@@ -380,7 +380,7 @@ int CALL02(___Socket______nativeRead_____AR_B, struct ___Socket___ * ___this___,
   do {
     byteread=read(fd, charstr, length);
   } while(byteread==-1&&errno==EINTR);
-#if defined(THREADS)||defined(DSTM)
+#if defined(THREADS)||defined(DSTM)||defined(STM)
 #ifdef PRECISE_GC
   restartaftergc(tmp);
 #endif