changes
authorbdemsky <bdemsky>
Fri, 15 May 2009 21:06:41 +0000 (21:06 +0000)
committerbdemsky <bdemsky>
Fri, 15 May 2009 21:06:41 +0000 (21:06 +0000)
Robust/src/Analysis/Locality/LocalityAnalysis.java
Robust/src/Benchmarks/SingleTM/KMeans/makefile
Robust/src/IR/Flat/BuildFlat.java
Robust/src/IR/Tree/SemanticCheck.java

index 8aff332c6dfe365d60ea7068f8fcbf025411ff06..f86ada2c551e95ea68ead14402f4154decdcaea2 100644 (file)
@@ -555,7 +555,8 @@ public class LocalityAnalysis {
   void processSetFieldNodeSTM(LocalityBinding lb, FlatSetFieldNode fsfn, Hashtable<TempDescriptor, Integer> currtable) {
     Integer srctype=currtable.get(fsfn.getSrc());
     Integer dsttype=currtable.get(fsfn.getDst());
-
+    if (dsttype==null)
+      System.out.println(fsfn);
     if (dsttype.equals(SCRATCH)) {
       if (srctype.equals(SCRATCH) && fsfn.getField().getType().isPrimitive() && !fsfn.getField().getType().isArray())
        return;
index 7fa5bb352cc96bc10147df91bd386fc1221eea3d..d40c8996bc787f7f8df2024266b546cc169f9294 100644 (file)
@@ -7,7 +7,7 @@ SRC=${MAINCLASS}.java \
     GlobalArgs.java \
     ../../../ClassLibrary/JavaSTM/Barrier.java
 FLAGS=-mainclass ${MAINCLASS} -singleTM -optimize -debug -dcopts -joptimize -stmstats -fastmemcpy
-FLAGS2=-mainclass ${MAINCLASS} -singleTM -optimize -debug -joptimize -dcopts -fastmemcpy -abcclose
+FLAGS2=-mainclass ${MAINCLASS} -singleTM -optimize -debug -joptimize -fastmemcpy -abcclose -dcopts
 FLAGS3=-mainclass ${MAINCLASS} -optimize -debug -joptimize -thread
 
 
index ea908a1fa930005b90170c14a00bf8f1fdf16ebe..95b57a9925ef6d1bddbcf1db5c75751d0e50571e 100644 (file)
@@ -221,9 +221,24 @@ public class BuildFlat {
   private NodePair flattenCreateObjectNode(CreateObjectNode con,TempDescriptor out_temp) {
     TypeDescriptor td=con.getType();
     if (!td.isArray()) {
-      FlatNew fn=new FlatNew(td, out_temp, con.isGlobal(), con.getDisjointId());
-      TempDescriptor[] temps=new TempDescriptor[con.numArgs()];
+      FlatNode fn=new FlatNew(td, out_temp, con.isGlobal(), con.getDisjointId());
       FlatNode last=fn;
+      //handle wrapper fields
+      ClassDescriptor cd=td.getClassDesc();
+      for(Iterator fieldit=cd.getFields();fieldit.hasNext();) {
+       FieldDescriptor fd=(FieldDescriptor)fieldit.next();
+       if (fd.getType().iswrapper()) {
+         TempDescriptor wrap_tmp=TempDescriptor.tempFactory("wrapper_obj",fd.getType());
+         FlatNode fnwrapper=new FlatNew(fd.getType(), wrap_tmp, con.isGlobal());
+         FlatSetFieldNode fsfn=new FlatSetFieldNode(out_temp, fd, wrap_tmp);
+         last.addNext(fnwrapper);
+         fnwrapper.addNext(fsfn);
+         last=fsfn;
+       }
+      }
+
+      TempDescriptor[] temps=new TempDescriptor[con.numArgs()];
+
       // Build arguments
       for(int i=0; i<con.numArgs(); i++) {
        ExpressionNode en=con.getArg(i);
index 6e6ac7a1f6e61647173669f66d87daa793dfe9ad..0f731f91c2ced15129e2f4d4ccddab61f3431cc0 100644 (file)
@@ -490,16 +490,17 @@ public class SemanticCheck {
       fan2.setField(fd);
       fan.left=fan2;
       fan.fieldname="value";
+
       ExpressionNode leftwr=fan.getExpression();
-      checkExpressionNode(md,nametable,leftwr,null);
       TypeDescriptor ltdwr=leftwr.getType();
       String fieldnamewr=fan.getFieldName();
       FieldDescriptor fdwr=(FieldDescriptor) ltdwr.getClassDesc().getFieldTable().get(fieldnamewr);
+      fan.setField(fdwr);
       if (fdwr==null)
          throw new Error("Unknown field "+fieldnamewr + " in "+fan.printNode(0)+" in "+md);
+    } else {
+      fan.setField(fd);
     }
-    fan.setField(fd);
-
     if (td!=null) {
       if (!typeutil.isSuperorType(td,fan.getType()))
        throw new Error("Field node returns "+fan.getType()+", but need "+td);
@@ -573,8 +574,9 @@ public class SemanticCheck {
          n.setField(fd);
          n.setVar((VarDescriptor)nametable.get("this"));        /* Need a pointer to this */
          FieldAccessNode fan=new FieldAccessNode(n,"value");
+         FieldDescriptor fdval=(FieldDescriptor) fd.getType().getClassDesc().getFieldTable().get("value");
+         fan.setField(fdval);
          nn.setExpression(fan);
-         checkExpressionNode(md,nametable,fan,td);
        } else {
          nn.setField(fd);
          nn.setVar((VarDescriptor)nametable.get("this"));        /* Need a pointer to this */