From 0a270739c8197aa38a10d0fd3a26835a6a0cf5b0 Mon Sep 17 00:00:00 2001 From: adash Date: Tue, 6 Jan 2009 18:58:21 +0000 Subject: [PATCH] more changes for rangePrefetch --- Robust/src/ClassLibrary/System.java | 2 +- Robust/src/IR/Flat/BuildFlat.java | 4 ++-- Robust/src/Runtime/runtime.c | 14 ++++++++++---- Robust/src/buildscript | 3 +++ 4 files changed, 16 insertions(+), 7 deletions(-) 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___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" -- 2.34.1