X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=Robust%2Fsrc%2FIR%2FState.java;h=eb61444024c5c3874a858c4e3d2fdec2f77e6d87;hb=6fe295717a19d554c4334738b098039b5f951710;hp=713354f4697b6ee7c1e24acc13e610c4f27af605;hpb=6e7c815a8880c2b7ab2d9ddbf61e642ca05a73d2;p=IRC.git diff --git a/Robust/src/IR/State.java b/Robust/src/IR/State.java index 713354f4..eb614440 100644 --- a/Robust/src/IR/State.java +++ b/Robust/src/IR/State.java @@ -2,6 +2,8 @@ package IR; import IR.Tree.*; import IR.Flat.*; import IR.*; +import Util.Lattice; + import java.util.*; import Analysis.TaskStateAnalysis.*; @@ -11,8 +13,11 @@ public class State { public State() { this.classes=new SymbolTable(); this.tasks=new SymbolTable(); + this.sclasses=new SymbolTable(); this.treemethodmap=new Hashtable(); this.flatmethodmap=new Hashtable(); + this.genAllMethods = true; + this.methods2gen = new SymbolTable(); this.parsetrees=new HashSet(); this.arraytypes=new HashSet(); this.arraytonumber=new Hashtable(); @@ -20,6 +25,7 @@ public class State { this.selfloops=new HashSet(); this.excprefetch=new HashSet(); this.classpath=new Vector(); + this.cd2locationOrderMap=new Hashtable(); this.lines=0; } @@ -47,10 +53,12 @@ public class State { /** Boolean flag which indicates whether compiler is compiling a task-based * program. */ + public boolean POINTER=false; + public boolean COREPROF=false; public boolean WEBINTERFACE=false; + public boolean MINIMIZE=false; public boolean TASK=false; public boolean FASTCHECK=false; - public boolean DSM=false; public boolean PREFETCH=false; public boolean TASKSTATE=false; public boolean TAGSTATE=false; @@ -58,33 +66,111 @@ public class State { public boolean FLATIRGRAPHTASKS=false; public boolean FLATIRGRAPHUSERMETHODS=false; public boolean FLATIRGRAPHLIBMETHODS=false; - public boolean MULTICORE=false; + public boolean KEEP_RG_FOR_ALL_PROGRAM_POINTS=false; public boolean OWNERSHIP=false; public int OWNERSHIPALLOCDEPTH=3; public boolean OWNERSHIPWRITEDOTS=false; public boolean OWNERSHIPWRITEALL=false; public String OWNERSHIPALIASFILE=null; + public boolean OWNERSHIPALIASTAB=false; + public int OWNERSHIPDEBUGCALLCOUNT=0; + public String OWNERSHIPDEBUGCALLEE=null; + public String OWNERSHIPDEBUGCALLER=null; + + + public boolean DISJOINT=false; + + public int DISJOINTALLOCDEPTH=1; + public boolean DISJOINTRELEASEMODE=false; + public boolean DISJOINTDETERMINISM=false; + + public boolean DISJOINTDVISITSTACK=true; + public boolean DISJOINTDVISITPQUE=false; + public boolean DISJOINTDVISITSTACKEESONTOP=false; + + public boolean DISJOINTWRITEDOTS=false; + public boolean DISJOINTWRITEALL=false; + public boolean DISJOINTWRITEIHMS=false; + public boolean DISJOINTWRITEINITCONTEXTS=false; + + public String DISJOINTALIASFILE=null; + public boolean DISJOINTALIASTAB=false; + + public String DISJOINTDEBUGCALLEE=null; + public String DISJOINTDEBUGCALLER=null; + public int DISJOINTDEBUGCALLVISITTOSTART=0; + public int DISJOINTDEBUGCALLNUMVISITS=0; + public boolean DISJOINTDEBUGCALLSTOPAFTER=false; + + public String DISJOINTSNAPSYMBOL=null; + public int DISJOINTSNAPVISITTOSTART=0; + public int DISJOINTSNAPNUMVISITS=0; + public boolean DISJOINTSNAPSTOPAFTER=false; + + public boolean DISJOINTDEBUGSCHEDULING=false; + + public boolean OOOJAVA=false; + public boolean OOODEBUG=false; + public boolean RCR=false; + public boolean RCR_DEBUG=false; + public boolean RCR_DEBUG_VERBOSE=false; + public boolean NOSTALLTR=false; + + //SSJava + public boolean SSJAVA=false; + + public boolean OPTIONAL=false; - public boolean ARRAYBOUNDARYCHECK=true; - public boolean RAW=false; - public boolean SCHEDULING=false; - public boolean USEPROFILE=false; + public boolean NOLOOP=false; + public boolean ARRAYPAD=false; public boolean THREAD=false; public boolean CONSCHECK=false; public boolean INSTRUCTIONFAILURE=false; - public boolean MLP=false; - public boolean MLPDEBUG=false; + public int OOO_NUMCORES=0; + public int OOO_MAXSESEAGE=0; + public boolean METHODEFFECTS=false; public static double TRUEPROB=0.8; public static boolean PRINTFLAT=false; + + //DSM options + public boolean DSM=false; + public boolean DSMTASK=false; + public static boolean ABORTREADERS=false; + + // Recovery Stats Options + public boolean DSMRECOVERYSTATS=false; + //STM options + public boolean EVENTMONITOR=false; + public static boolean STMARRAY=false; + public static boolean SINGLETM=false; + public static boolean READSET=false; + public boolean SANDBOX=false; + public boolean DCOPTS=false; + public boolean DELAYCOMP=false; + public boolean DUALVIEW=false; + public boolean HYBRID=false; + + // Bamboo options + public boolean MULTICORE=false; + public boolean MULTICOREGC=false; + public boolean BAMBOOCOMPILETIME = false; + public boolean ARRAYBOUNDARYCHECK=true; + public boolean RAW=false; + public boolean SCHEDULING=false; + public boolean USEPROFILE=false; public static boolean PRINTSCHEDULING=false; public static boolean PRINTSCHEDULESIM=false; public static boolean PRINTCRITICALPATH=false; - public static boolean ABORTREADERS=false; - public static boolean SINGLETM=false; public int CORENUM = 1; + public int CORENUM4GC = 0; + public String profilename = null; + public String outputdir = "/scratch/"; + // MGC options + public boolean MGC=false; + + //Other options public String structfile; public String main; - public String outputdir = "/scratch/"; public boolean INLINEATOMIC=false; public int inlineatomicdepth; public HashSet selfloops; @@ -92,18 +178,21 @@ public class State { public Vector classpath; public SymbolTable classes; public SymbolTable tasks; + public SymbolTable sclasses; // table of classes with static field/blocks public Set parsetrees; public Hashtable treemethodmap; public Hashtable flatmethodmap; + SymbolTable methods2gen; + public boolean genAllMethods; private HashSet arraytypes; public Hashtable arraytonumber; - private int numclasses=0; + private int numclasses=1; // start from 1 instead of 0 for multicore gc + private int numinterfaces = 0; private int numtasks=0; + private int numstaticblocks=0; private int arraycount=0; + public Hashtable cd2locationOrderMap; public boolean OPTIMIZE=false; - public boolean DCOPTS=false; - public boolean DELAYCOMP=false; - private Hashtable> optionaltaskdescriptors; private Hashtable>> analysisresults; @@ -155,12 +244,42 @@ public class State { if (classes.contains(tdn.getSymbol())) throw new Error("Class "+tdn.getSymbol()+" defined twice"); classes.add(tdn); - numclasses++; + if(tdn.isInterface()) { + numinterfaces++; + } else { + numclasses++; + } + if((tdn.numstaticfields != 0) || (tdn.numstaticblocks != 0)) { + sclasses.add(tdn); + } } - + + public void setGenAllMethods(boolean flag) { + this.genAllMethods = flag; + } + + public void addMethod2gen(MethodDescriptor md) { + if(this.genAllMethods) { + throw new Error("The state.genAllMethods is TRUE, do not need to check methods to genenrate"); + } + this.methods2gen.add(md); + } + + public SymbolTable getMethod2gen() { + return this.methods2gen; + } + public int numClasses() { return numclasses; } + + public int numInterfaces() { + return numinterfaces; + } + + public int numStaticBlocks() { + return numstaticblocks; + } public BlockNode getMethodBody(MethodDescriptor md) { return (BlockNode)treemethodmap.get(md); @@ -177,6 +296,10 @@ public class State { public SymbolTable getTaskSymbolTable() { return tasks; } + + public SymbolTable getSClassSymbolTable() { + return sclasses; + } /** Returns Flat IR representation of MethodDescriptor md. */ @@ -225,4 +348,13 @@ public class State { tasks.add(td); numtasks++; } + + public void addLocationOrder(ClassDescriptor cd, Lattice order){ + cd2locationOrderMap.put(cd,order); + } + + public Hashtable getCd2LocationOrder(){ + return cd2locationOrderMap; + } + }