From fd1c9952c7e9bd63014858f119edbda2dcd5cebf Mon Sep 17 00:00:00 2001 From: bdemsky Date: Fri, 15 May 2009 21:06:41 +0000 Subject: [PATCH] changes --- .../Analysis/Locality/LocalityAnalysis.java | 3 ++- .../src/Benchmarks/SingleTM/KMeans/makefile | 2 +- Robust/src/IR/Flat/BuildFlat.java | 19 +++++++++++++++++-- Robust/src/IR/Tree/SemanticCheck.java | 10 ++++++---- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/Robust/src/Analysis/Locality/LocalityAnalysis.java b/Robust/src/Analysis/Locality/LocalityAnalysis.java index 8aff332c..f86ada2c 100644 --- a/Robust/src/Analysis/Locality/LocalityAnalysis.java +++ b/Robust/src/Analysis/Locality/LocalityAnalysis.java @@ -555,7 +555,8 @@ public class LocalityAnalysis { void processSetFieldNodeSTM(LocalityBinding lb, FlatSetFieldNode fsfn, Hashtable 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; diff --git a/Robust/src/Benchmarks/SingleTM/KMeans/makefile b/Robust/src/Benchmarks/SingleTM/KMeans/makefile index 7fa5bb35..d40c8996 100644 --- a/Robust/src/Benchmarks/SingleTM/KMeans/makefile +++ b/Robust/src/Benchmarks/SingleTM/KMeans/makefile @@ -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 diff --git a/Robust/src/IR/Flat/BuildFlat.java b/Robust/src/IR/Flat/BuildFlat.java index ea908a1f..95b57a99 100644 --- a/Robust/src/IR/Flat/BuildFlat.java +++ b/Robust/src/IR/Flat/BuildFlat.java @@ -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