check in bug fix
authorbdemsky <bdemsky>
Wed, 18 Jul 2007 00:58:45 +0000 (00:58 +0000)
committerbdemsky <bdemsky>
Wed, 18 Jul 2007 00:58:45 +0000 (00:58 +0000)
Robust/src/IR/Flat/BuildCode.java
Robust/src/IR/Flat/BuildFlat.java
Robust/src/IR/TagVarDescriptor.java
Robust/src/IR/TaskDescriptor.java

index 9fbcb4c9714c5c1106bf8a88569df59c8241752f..34e2209640405ab07956078b4fd5c1f190a1c73a 100644 (file)
@@ -615,6 +615,14 @@ public class BuildCode {
                objectparams.addPrim(temp);
        }
 
+       for(int i=0;i<fm.numTags();i++) {
+           TempDescriptor temp=fm.getTag(i);
+           if (GENERATEPRECISEGC)
+               objectparams.addPtr(temp);
+           else
+               objectparams.addPrim(temp);
+       }
+
        TempObject objecttemps=md!=null?new TempObject(objectparams,md,tag++):new TempObject(objectparams, task, tag++);
        if (md!=null)
            tempstable.put(md, objecttemps);
@@ -896,10 +904,6 @@ public class BuildCode {
                    TempDescriptor temp=objectparams.getPointer(i);
                    output.println("  struct "+temp.getType().getSafeSymbol()+" * "+temp.getSafeSymbol()+";");
                }
-               for(int i=0;i<fm.numTags();i++) {
-                   TempDescriptor temp=fm.getTag(i);
-                   output.println("  struct ___TagDescriptor___ * "+temp.getSafeSymbol()+";");
-               }
 
                output.println("};\n");
                if ((objectparams.numPointers()+fm.numTags())>maxtaskparams) {
index 578e4a3217bf15de7b0c7ca98a0eceea89f2488f..e35799a131d831a2f0002b9254eb1ed43d722169 100644 (file)
@@ -48,7 +48,7 @@ public class BuildFlat {
        FlatMethod fm=new FlatMethod(td);
        fm.addNext(ffan);
 
-       HashSet visitedset=new HashSet();
+       Hashtable visitedset=new Hashtable();
 
        for(int i=0;i<td.numParameters();i++) {
            VarDescriptor paramvd=td.getParameter(i);
@@ -59,9 +59,13 @@ public class BuildFlat {
                for(int j=0;j<tel.numTags();j++) {
                    TagVarDescriptor tvd=(TagVarDescriptor) td.getParameterTable().getFromSameScope(tel.getName(j));
                    TempDescriptor tagtmp=getTempforVar(tvd);
-                   if (!visitedset.contains(tvd)) {
-                       visitedset.add(tvd);
+                   if (!visitedset.containsKey(tvd.getName())) {
+                       visitedset.put(tvd.getName(),tvd.getTag());
                        fm.addTagTemp(tagtmp);
+                   } else {
+                       TagDescriptor tmptd=(TagDescriptor) visitedset.get(tvd.getName());
+                       if (!tmptd.equals(tvd.getTag()))
+                           throw new Error("Two different tag types with same name as parameters to:"+td);
                    }
                    tel.setTemp(j, tagtmp);
                }
index 37d76183eb1dfd48eab6c8aa02d58923a8c744c3..a478f44753f9904f89a7b0958595c5cee158e880 100644 (file)
@@ -31,7 +31,7 @@ public class TagVarDescriptor extends Descriptor {
        return new TypeDescriptor(TypeDescriptor.TAG);
     }
 
-    public boolean equals(Object o) {
+    /*    public boolean equals(Object o) {
        if (o instanceof TagVarDescriptor) {
            TagVarDescriptor tvd=(TagVarDescriptor)o;
            if (tvd.identifier.equals(identifier)) {
@@ -48,7 +48,7 @@ public class TagVarDescriptor extends Descriptor {
 
     public int hashCode() {
        return identifier.hashCode();
-    }
+       }*/
 
     public String toString() {
            return td.toString()+" "+identifier;
index 6640963b4835ab9facb4609b65cf39eb2dc29c3e..fb8e784cb69d038f1b3ca318e8ebb5124436ab33 100644 (file)
@@ -59,7 +59,7 @@ public class TaskDescriptor extends Descriptor {
                TagVarDescriptor tvd=new TagVarDescriptor(new TagDescriptor(tel.getType(i)), tel.getName(i));
                if (paramtable.getFromSameScope(tel.getName(i))==null) {
                    paramtable.add(tvd);
-               } else if (!((paramtable.getFromSameScope(tel.getName(i)) instanceof TagVarDescriptor)&&paramtable.getFromSameScope(tel.getName(i)).equals(tvd)))
+               } else if (!((paramtable.getFromSameScope(tel.getName(i)) instanceof TagVarDescriptor)&&((TagVarDescriptor)paramtable.getFromSameScope(tel.getName(i))).getTag().equals(tvd.getTag())))
                    throw new Error("Parameter "+paramname+" already defined");
            }
        }