change
authorbdemsky <bdemsky>
Fri, 9 Oct 2009 18:02:50 +0000 (18:02 +0000)
committerbdemsky <bdemsky>
Fri, 9 Oct 2009 18:02:50 +0000 (18:02 +0000)
Robust/src/Runtime/STM/commit.c
Robust/src/Runtime/STM/sandbox.c
Robust/src/Runtime/STM/stats.c
Robust/src/Runtime/STM/stm.c
Robust/src/Runtime/STM/tm.h

index a9d545e8bce9e32fd7d2409e3da4bbe5a3632d71..b4500520d46ca4a886ba0822760e2e288d9d74d4 100644 (file)
@@ -123,29 +123,33 @@ int transCommit() {
 }
 
 #ifdef STMSTATS
-  You need to add free statements for oidrdage in a way that they will not appear if this option is not defined.
+#define STATFREE free(oidrdage);
+#define STATALLOC oidrdage=malloc(size);
+#define STATASSIGN oidrdage=rdage;
+#else
+  #define STATFREE
+  #define STATALLOC
+  #define STATASSIGN
 #endif
 
 #ifdef DELAYCOMP
 #define freearrays if (c_numelements>=200) { \
-    free(oidrdlocked); \
-    free(oidrdversion); \
+    STATFREE                                \
+    free(oidrdlocked);              \
+    free(oidrdversion);                             \
   } \
   if (t_numelements>=200) { \
     free(oidwrlocked); \
   }
 #else
 #define freearrays   if (c_numelements>=200) { \
+    STATFREE \
     free(oidrdlocked); \
     free(oidrdversion); \
     free(oidwrlocked); \
   }
 #endif
 
-#ifdef STMSTATS
-    you need to set oidrdage in a way that does not appear if this macro is not defined.
-#endif
-
 #ifdef DELAYCOMP
 #define allocarrays int t_numelements=c_numelements+dc_c_numelements; \
   if (t_numelements<200) { \
@@ -156,10 +160,12 @@ int transCommit() {
   if (c_numelements<200) { \
     oidrdlocked=rdlocked; \
     oidrdversion=rdversion; \
+    STATASSIGN             \
   } else { \
     int size=c_numelements*sizeof(void*); \
     oidrdlocked=malloc(size); \
     oidrdversion=malloc(size); \
+    STATALLOC                 \
   }
 #else
 #define allocarrays if (c_numelements<200) { \
@@ -171,6 +177,7 @@ int transCommit() {
     oidrdlocked=malloc(size); \
     oidrdversion=malloc(size); \
     oidwrlocked=malloc(size); \
+    STATALLOC                \
   }
 #endif
 
index ac020d9d39c7b6f81dbafa0ba244e9fc112cbd64..3c07025e281247b31276e55be28199658f4e5183 100644 (file)
@@ -1,7 +1,6 @@
 #include "sandbox.h"
 #include "tm.h"
 #include <stdio.h>
-#define likely(x) x
 __thread int transaction_check_counter;
 __thread jmp_buf aborttrans;
 __thread int abortenabled;
index c22f7c4f7d88a49673854dc93b416ab40ade1d05..be3fb60e5ec9812d293d4ab279fb8812b9059065 100644 (file)
@@ -1,6 +1,7 @@
 #include "tm.h"
 #include "garbage.h"
 
+#define PERCENT_ALLOWED_ABORT 0.7
 #ifdef STMSTATS
 /* Thread variable for locking/unlocking */
 __thread threadrec_t *trec;
index fb5b6c6631d8848c1b9ba274d08a09ef42743bad..0b35efc71f98d3a73e1f19bf0a55c3cd2c0caa0e 100644 (file)
@@ -13,7 +13,6 @@
 #include "tm.h"
 #include "garbage.h"
 
-#define likely(x) x
 /* Per thread transaction variables */
 __thread objstr_t *t_cache;
 __thread objstr_t *t_reserve;
index 1a71dc2c733faa18dcc76cb436034fde98aba30b..864de75e28b768da6208c10004a03907b8d1ac27 100644 (file)
@@ -245,11 +245,10 @@ objheader_t * needLock(objheader_t *, void *);
 extern __thread threadrec_t *trec;
 extern __thread struct objlist * lockedobjs;
 extern __thread int t_objnumcount;
-
-/* Collect stats for object classes causing abort */
-extern objtypestat_t typesCausingAbort[TOTALNUMCLASSANDARRAY];
 #endif
 
+#define likely(x) x
+
 extern void * curr_heapbase;
 extern void * curr_heapptr;
 extern void * curr_heaptop;