hack to work around analysis bug
authorbdemsky <bdemsky>
Tue, 15 Apr 2008 00:15:15 +0000 (00:15 +0000)
committerbdemsky <bdemsky>
Tue, 15 Apr 2008 00:15:15 +0000 (00:15 +0000)
Robust/src/Analysis/Locality/LocalityAnalysis.java
Robust/src/Benchmarks/Prefetch/Em3d/dsm/BiGraph.java
Robust/src/Benchmarks/Prefetch/Em3d/dsm/makefile
Robust/src/ClassLibrary/Integer.java
Robust/src/IR/Flat/BuildCode.java

index f4187fe17477a86f21648bd66e5c4b4018b81e03..3e061bddd4d7def79f70256475e2e3d68b1ab8e7 100644 (file)
@@ -196,7 +196,13 @@ public class LocalityAnalysis {
            MethodDescriptor md=lb.getMethod();
            Hashtable<FlatNode,Hashtable<TempDescriptor, Integer>> temptable=new Hashtable<FlatNode,Hashtable<TempDescriptor, Integer>>();
            Hashtable<FlatNode, Integer> atomictable=new Hashtable<FlatNode, Integer>();
-           computeCallsFlags(md, lb, temptable, atomictable);
+           try {
+               computeCallsFlags(md, lb, temptable, atomictable);
+           } catch (Error e) {
+               System.out.println("Error in "+md+" context "+lb);
+               e.printStackTrace();
+               System.exit(-1);
+           }
            atomictab.put(lb, atomictable);
            temptab.put(lb, temptable);
 
@@ -363,12 +369,13 @@ public class LocalityAnalysis {
        Integer currreturnval=EITHER; //Start off with the either value
        for(Iterator methodit=methodset.iterator();methodit.hasNext();) {
            MethodDescriptor md=(MethodDescriptor) methodit.next();
+
            boolean isnative=md.getModifiers().isNative();
            boolean isjoin = md.getClassDesc().getSymbol().equals(TypeUtil.ThreadClass)&&!nodemd.getModifiers().isStatic()&&nodemd.numParameters()==0&&md.getSymbol().equals("join");
            
            LocalityBinding lb=new LocalityBinding(md, isatomic);
            if (isnative&&isatomic) {
-               System.out.println("Don't call native methods in atomic blocks!");
+               System.out.println("Don't call native methods in atomic blocks!"+currlb.getMethod());
            }
            if (runmethodset==null||!runmethodset.contains(md)) {
                //Skip this part if it is a run method
@@ -495,10 +502,14 @@ public class LocalityAnalysis {
     void processOpNode(FlatOpNode fon, Hashtable<TempDescriptor, Integer> currtable) {
        /* Just propagate value */
        Integer srcvalue=currtable.get(fon.getLeft());
+
        if (srcvalue==null) {
-           throw new Error(fon.getLeft()+" is undefined!");
+           if (!fon.getLeft().getType().isPtr()) {
+               srcvalue=LOCAL;
+           } else
+               throw new Error(fon.getLeft()+" is undefined!");
        }
-       currtable.put(fon.getDest(), currtable.get(fon.getLeft()));
+       currtable.put(fon.getDest(), srcvalue);
     }
 
     void processCastNode(FlatCastNode fcn, Hashtable<TempDescriptor, Integer> currtable) {
index 80099b92443063e92aaeb7daff4fd05e49425bbb..b92fe89f7f5e86d5e8e78314ecec716ac0171855 100644 (file)
@@ -41,10 +41,14 @@ public class BiGraph
 
     // making nodes (we create a table)
     //if (verbose) System.printString("making nodes (tables in orig. version)");
-    Node[] hTable = global new Node[numNodes];
-    Node[] eTable = global new Node[numNodes];
-    hTable = Node.fillTable(numNodes, numDegree, r);
-    eTable = Node.fillTable(numNodes, numDegree, r);
+    Node[] hTable = global new Node[1];
+
+    Node[] eTable = global new Node[1];
+
+    if (true) {
+       eTable=Node.fillTable(numNodes, numDegree, r);
+       hTable=Node.fillTable(numNodes, numDegree, r);
+    }
 
     // making neighbors
     //if (verbose) System.printString("updating from and coeffs");
index 014098e16dff03a27a25684adf93f49848340b3b..387658c1aaaaaade8f3ff064a096aeca050d1b70 100644 (file)
@@ -4,7 +4,7 @@ SRC=${MAINCLASS}.java \
        Node.java \
        Barrier.java
 FLAGS=-dsm -prefetch -optimize -profile -debug -mainclass ${MAINCLASS} -o ${MAINCLASS}
-FLAGS2=-dsm -optimize -printflat -profile -debug -mainclass ${MAINCLASS} -o ${MAINCLASS}NP
+FLAGS2=-dsm -optimize -profile -debug -mainclass ${MAINCLASS} -o ${MAINCLASS}NP
 
 default:
        ../../../../buildscript ${FLAGS2} ${SRC}
index 06c621e12fcf2759e0732bfe73fc3023f91ad26c..2358adb7c3f8bb308881c8a11ab570f5d9a966c2 100644 (file)
@@ -40,7 +40,9 @@ public class Integer {
                val=10+b-'a';
            else if (b>='A'&&b<='Z')
                val=10+b-'A';
-           else cont=false;
+           else {
+               cont=false;
+           }
            if (cont) {
                if (val>=radix)
                    System.error();
index 3749ee241e5a0ffd8f89ba80e0a157bc2ef6b0d8..84565ce1cae57b9d24e6533e3bcdffce3e913014 100644 (file)
@@ -2016,7 +2016,9 @@ public class BuildCode {
                output.println(dst+"->"+nextobjstr+"="+revertptr+";");
                output.println("trans->revertlist=(struct ___Object___ *)"+dst+";");
                output.println("}");
-           } else throw new Error("Unknown array type");
+           } else {
+               throw new Error("Unknown array type in"+fsen+" in " + fm+"\n"+(lb!=null?(lb+" "+lb.getExplanation()):""));
+           }
            if (srcglobal) {
                output.println("{");
                String src=generateTemp(fm, fsen.getSrc(), lb);