X-Git-Url: http://plrg.eecs.uci.edu/git/?p=IRC.git;a=blobdiff_plain;f=Robust%2Fsrc%2FIR%2FState.java;h=00679763478437d06bb1a3046c88586ea6c061d6;hp=cf36777042903ba82e7c2bef4a5fa91a1cff910f;hb=5e5c10a2592a9acd282a1ae27bdf7468beb12e90;hpb=615ca89617f654b90f2c868f305b7c611b7631f2 diff --git a/Robust/src/IR/State.java b/Robust/src/IR/State.java index cf367770..00679763 100644 --- a/Robust/src/IR/State.java +++ b/Robust/src/IR/State.java @@ -2,12 +2,31 @@ package IR; import IR.Tree.*; import IR.Flat.*; import IR.*; +import Util.Lattice; +import Util.Pair; + import java.util.*; import Analysis.TaskStateAnalysis.*; +import Analysis.CallGraph.CallGraph; public class State { + public static long startTime; + public static long lastTime; + public static void logEvent(String event) { + long currTime=System.nanoTime(); + double delta=((double)(currTime-startTime))/1000000000; + double deltaLast=((double)(currTime-lastTime))/1000000000; + System.out.println("TLOG: Time of "+event+"="+delta); + System.out.println("TLOG: Elapsed time "+event+"="+deltaLast); + lastTime=currTime; + } - public int lines; + public static void initTimer() { + startTime=System.nanoTime(); + lastTime=startTime; + } + + public int lines; public State() { this.classes=new SymbolTable(); this.tasks=new SymbolTable(); @@ -21,6 +40,7 @@ public class State { this.selfloops=new HashSet(); this.excprefetch=new HashSet(); this.classpath=new Vector(); + this.fn2labelMap=new Hashtable(); this.lines=0; } @@ -48,6 +68,9 @@ public class State { /** Boolean flag which indicates whether compiler is compiling a task-based * program. */ + public boolean JNI=false; + public boolean CAPTURE_NULL_DEREFERENCES=false; + public boolean POINTER=false; public boolean COREPROF=false; public boolean WEBINTERFACE=false; public boolean MINIMIZE=false; @@ -60,6 +83,7 @@ public class State { public boolean FLATIRGRAPHTASKS=false; public boolean FLATIRGRAPHUSERMETHODS=false; public boolean FLATIRGRAPHLIBMETHODS=false; + public boolean KEEP_RG_FOR_ALL_PROGRAM_POINTS=false; public boolean OWNERSHIP=false; public int OWNERSHIPALLOCDEPTH=3; public boolean OWNERSHIPWRITEDOTS=false; @@ -70,7 +94,7 @@ public class State { public String OWNERSHIPDEBUGCALLEE=null; public String OWNERSHIPDEBUGCALLER=null; - + public boolean DISJOINT=false; public int DISJOINTALLOCDEPTH=1; @@ -99,13 +123,38 @@ public class State { public int DISJOINTSNAPVISITTOSTART=0; public int DISJOINTSNAPNUMVISITS=0; public boolean DISJOINTSNAPSTOPAFTER=false; - public boolean DISJOINTDEBUGSCHEDULING=false; + public boolean DISJOINT_WRITE_ALL_NODE_FINAL_GRAPHS=false; + public boolean DISJOINT_COUNT_VISITS=false; + public boolean DISJOINT_COUNT_GRAPH_ELEMENTS=false; + public String DISJOINT_COUNT_GRAPH_ELEMENTS_FILE=null; + + public boolean POINTSTO_CHECK_V_RUNTIME=false; + + public boolean DO_DEFINITE_REACH_ANALYSIS=false; + public boolean DISJOINT_USE_GLOBAL_SWEEP=true; + public boolean DISJOINT_USE_STRONG_UPDATE=true; + public boolean DISJOINT_USE_PREDICATES=true; + public boolean DISJOINT_SUMMARIZE_PER_CLASS=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 SSJAVADEBUG=false; + public boolean SSJAVAINFER=false; + public boolean SSJAVA_GENCODE_PREVENT_CRASHES=false; + public boolean SSJAVA_INJECT_ERROR=false; + public boolean SSJAVA_INFER_NAIVE_WRITEDOTS=false; + public int SSJAVA_INV_ERROR_PROB=0; + public int SSJAVA_ERROR_SEED=0; + public Set annotationRequireSet; public boolean OPTIONAL=false; public boolean NOLOOP=false; @@ -113,14 +162,12 @@ public class State { public boolean THREAD=false; public boolean CONSCHECK=false; public boolean INSTRUCTIONFAILURE=false; - public boolean MLP=false; - public boolean MLPDEBUG=false; - public int MLP_NUMCORES=0; - public int MLP_MAXSESEAGE=0; + 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; @@ -138,10 +185,11 @@ public class State { public boolean DELAYCOMP=false; public boolean DUALVIEW=false; public boolean HYBRID=false; - + // Bamboo options public boolean MULTICORE=false; public boolean MULTICOREGC=false; + public boolean PMC=false; public boolean BAMBOOCOMPILETIME = false; public boolean ARRAYBOUNDARYCHECK=true; public boolean RAW=false; @@ -156,7 +204,8 @@ public class State { public String outputdir = "/scratch/"; // MGC options public boolean MGC=false; - + public boolean OBJECTLOCKDEBUG=false; + //Other options public String structfile; public String main; @@ -171,13 +220,17 @@ public class State { public Set parsetrees; public Hashtable treemethodmap; public Hashtable flatmethodmap; + SymbolTable methods2gen; private HashSet arraytypes; public Hashtable arraytonumber; 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 fn2labelMap; public boolean OPTIMIZE=false; + public boolean LINENUM=false; private Hashtable> optionaltaskdescriptors; private Hashtable>> analysisresults; @@ -225,20 +278,33 @@ public class State { return td; } + public static TypeDescriptor getTypeDescriptor(String n) { + TypeDescriptor td=new TypeDescriptor(n); + return td; + } + public void addClass(ClassDescriptor tdn) { 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 int numClasses() { return numclasses; } - + + public int numInterfaces() { + return numinterfaces; + } + public int numStaticBlocks() { return numstaticblocks; } @@ -258,7 +324,7 @@ public class State { public SymbolTable getTaskSymbolTable() { return tasks; } - + public SymbolTable getSClassSymbolTable() { return sclasses; } @@ -310,4 +376,13 @@ public class State { tasks.add(td); numtasks++; } + + public void setAnnotationRequireSet(Set set){ + annotationRequireSet=set; + } + + public Set getAnnotationRequireSet(){ + return annotationRequireSet; + } + }