small changes for improving prefetch
authoradash <adash>
Thu, 31 Jul 2008 07:33:12 +0000 (07:33 +0000)
committeradash <adash>
Thu, 31 Jul 2008 07:33:12 +0000 (07:33 +0000)
Robust/src/IR/Flat/BuildCode.java
Robust/src/Runtime/DSTM/interface/trans.c

index c59d216e79e27b1629d2521030f72a8dfc9b806e..e2292f00744156627385593f7ef8e523ac480ef6 100644 (file)
@@ -1495,6 +1495,8 @@ public class BuildCode {
         output.println("/* prefetchid_" + fpn.siteid + " */");
            output.println("void * prefptr;");
            output.println("int tmpindex;");
+
+        output.println("if((evalPrefetch["+fpn.siteid+"].operMode) || (evalPrefetch["+fpn.siteid+"].retrycount <= 0)) {");
            /*Create C code for oid array */
            output.print("   unsigned int oidarray_[] = {");
            boolean needcomma=false;
@@ -1528,14 +1530,13 @@ public class BuildCode {
            }
            output.println("};");
            /* make the prefetch call to Runtime */
-        output.println("  if(evalPrefetch["+fpn.siteid+"].operMode) {");
-           output.println("    prefetch("+fpn.siteid+" ,"+tuplecount+", oidarray_, endoffsetarry_, fieldarry_);");
-           output.println("  } else if(evalPrefetch["+fpn.siteid+"].retrycount <= 0) {");
-           output.println("    prefetch("+fpn.siteid+" ,"+tuplecount+", oidarray_, endoffsetarry_, fieldarry_);");
-           output.println("    evalPrefetch["+fpn.siteid+"].retrycount = RETRYINTERVAL;");
-           output.println("  } else {");
-           output.println("    evalPrefetch["+fpn.siteid+"].retrycount--;");
-           output.println("  }");
+        output.println("   if(!evalPrefetch["+fpn.siteid+"].operMode) {"); 
+           output.println("     evalPrefetch["+fpn.siteid+"].retrycount = RETRYINTERVAL;");
+           output.println("   }");
+           output.println("   prefetch("+fpn.siteid+" ,"+tuplecount+", oidarray_, endoffsetarry_, fieldarry_);");
+           output.println(" } else {");
+           output.println("   evalPrefetch["+fpn.siteid+"].retrycount--;");
+           output.println(" }");
            output.println("}");
        }   
     }   
index 2316f7df9cadc8b3971fc005a4b51c723f750f93..d706678bffb2e2fa61dd8e55168e80187cc79d02 100644 (file)
@@ -853,6 +853,7 @@ int updatePrefetchCache(thread_data_array_t* tdata, int numoid, char oidType) {
     }
     pthread_mutex_lock(&prefetchcache_mutex);
     header = (objheader_t *) chashSearch(tdata->rec->lookupTable, oid);
+    header->version += 1;
     //copy object into prefetch cache
     GETSIZE(size, header);
     if ((newAddr = prefetchobjstrAlloc(size + sizeof(objheader_t))) == NULL) {
@@ -1085,7 +1086,7 @@ int transAbortProcess(local_thread_data_array_t  *localtdata) {
   return 0;
 }
 
-/*This function completes the COMMIT process is the transaction is commiting*/
+/*This function completes the COMMIT process if the transaction is commiting*/
 int transComProcess(local_thread_data_array_t  *localtdata) {
   objheader_t *header, *tcptr;
   int i, nummod, tmpsize, numcreated, numlocked;