From: adash <adash>
Date: Tue, 6 Jan 2009 18:58:21 +0000 (+0000)
Subject: more changes for rangePrefetch
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=0a270739c8197aa38a10d0fd3a26835a6a0cf5b0;p=IRC.git

more changes for rangePrefetch
---

diff --git a/Robust/src/ClassLibrary/System.java b/Robust/src/ClassLibrary/System.java
index 711769e0..7dadfe2e 100644
--- a/Robust/src/ClassLibrary/System.java
+++ b/Robust/src/ClassLibrary/System.java
@@ -18,6 +18,6 @@ public class System {
 
   public static native void clearPrefetchCache();
 
-  public static native void rangePrefetch(Object o, short numoffset,  short[] offsets); //TODO Complete this definition
+  public static native void rangePrefetch(Object o, short[] offsets);
 
 }
diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java
index d7201101..243f6a88 100644
--- a/Robust/src/IR/Flat/BuildFlat.java
+++ b/Robust/src/IR/Flat/BuildFlat.java
@@ -400,7 +400,7 @@ public class BuildFlat {
     FlatNode first=null;
     FlatNode last=null;
     TempDescriptor src_tmp = src_tmp=an.getSrc()==null ? TempDescriptor.tempFactory("srctmp",an.getDest().getType()) : TempDescriptor.tempFactory("srctmp",an.getSrc().getType());
-    
+
     //Get src value
     if (an.getSrc()!=null) {
       NodePair np_src=flattenExpressionNode(an.getSrc(),src_tmp);
@@ -662,7 +662,7 @@ public class BuildFlat {
 	    fon.addNext(fon2);
 	    last=fon2;
 	  }
-      return new NodePair(first, last);
+	  return new NodePair(first, last);
 	} //end of else
       }
     }
diff --git a/Robust/src/Runtime/runtime.c b/Robust/src/Runtime/runtime.c
index ae9dbe15..52036b4e 100644
--- a/Robust/src/Runtime/runtime.c
+++ b/Robust/src/Runtime/runtime.c
@@ -108,16 +108,22 @@ void CALL00(___System______clearPrefetchCache____) {
   prehashClear();
 }
 
-void CALL12(___System______rangePrefetch____L___Object____S__AR_S, struct ___Object___ * ___o___, short ___numoffset___, struct ArrayObject * ___offsets___) {
+void CALL02(___System______rangePrefetch____L___Object_____AR_S, struct ___Object___ * ___o___, struct ArrayObject * ___offsets___) {
   /* Manual Prefetches to be inserted */
-  unsigned int oid;
-  oid = ((int *) VAR(___o___))[0];
+  //printf("DEBUG-> %s() ___Object___ * ___o___ = %x\n", __func__, VAR(___o___));
+  //printf("DEBUG-> %s() ArrayObject * = %x\n", __func__, VAR(___offsets___));
   int numoffset=VAR(___offsets___)->___length___;
   int i;
   short offArry[numoffset];
   for(i = 0; i<numoffset; i++) {
     offArry[i] = *((short *)(((char *)&VAR(___offsets___)->___length___) + sizeof(int) + i * sizeof(short)));
-    //printf("Testing-> offArry[%d] = %d\n", i, offArry[i]);
+    //printf("DEBUG-> offArry[%d] = %d\n", i, offArry[i]);
+  }
+  unsigned int oid;
+  if(((unsigned int)(VAR(___o___)) & 1) != 0) { //odd
+    oid =  (unsigned int) VAR(___o___); //outside transaction therefore just an oid
+  } else { //even
+    oid = (unsigned int) COMPOID(VAR(___o___)); //inside transaction therefore a pointer to oid
   }
   rangePrefetch(oid, (short)numoffset, offArry);
 }
diff --git a/Robust/src/buildscript b/Robust/src/buildscript
index 05830c54..b9a22578 100755
--- a/Robust/src/buildscript
+++ b/Robust/src/buildscript
@@ -218,6 +218,9 @@ EXTRAOPTIONS="$EXTRAOPTIONS -DDEBUG"
 elif [[ $1 = '-dsmcaching' ]]
 then
 EXTRAOPTIONS="$EXTRAOPTIONS -DCACHE"
+elif [[ $1 = '-rangeprefetch' ]]
+then
+EXTRAOPTIONS="$EXTRAOPTIONS -DRANGEPREFETCH"
 elif [[ $1 = '-nooptimize' ]]
 then
 EXTRAOPTIONS="$EXTRAOPTIONS -O0"