- for(int i=0;i<args.length;i++) {
- String option=args[i];
- if (option.equals("-precise"))
- IR.Flat.BuildCode.GENERATEPRECISEGC=true;
- else if (option.equals("-prefetch"))
- state.PREFETCH=true;
- else if (option.equals("-dir"))
- IR.Flat.BuildCode.PREFIX=args[++i]+"/";
- else if (option.equals("-selfloop"))
- state.selfloops.add(args[++i]);
- else if (option.equals("-classlibrary"))
- ClassLibraryPrefix=args[++i]+"/";
- else if (option.equals("-mainclass"))
- state.main=args[++i];
- else if (option.equals("-struct"))
- state.structfile=args[++i];
- else if (option.equals("-conscheck"))
- state.CONSCHECK=true;
- else if (option.equals("-task"))
- state.TASK=true;
- else if (option.equals("-taskstate"))
- state.TASKSTATE=true;
- else if (option.equals("-tagstate"))
- state.TAGSTATE=true;
- else if (option.equals("-flatirtasks")) {
- state.FLATIRGRAPH=true;
- state.FLATIRGRAPHTASKS=true;
- }
- else if (option.equals("-flatirusermethods")) {
- state.FLATIRGRAPH=true;
- state.FLATIRGRAPHUSERMETHODS=true;
- }
- else if (option.equals("-flatirlibmethods")) {
- state.FLATIRGRAPH=true;
- state.FLATIRGRAPHLIBMETHODS=true;
- }
- else if (option.equals("-ownership"))
- state.OWNERSHIP=true;
- else if (option.equals("-optional"))
- state.OPTIONAL=true;
- else if (option.equals("-scheduling"))
- state.SCHEDULING=true;
- else if (option.equals("-thread"))
- state.THREAD=true;
- else if (option.equals("-dsm"))
- state.DSM=true;
- else if (option.equals("-webinterface"))
- state.WEBINTERFACE=true;
- else if (option.equals("-instructionfailures"))
- state.INSTRUCTIONFAILURE=true;
- else if (option.equals("-help")) {
- System.out.println("-classlibrary classlibrarydirectory -- directory where classlibrary is located");
- System.out.println("-selfloop task -- this task doesn't self loop its parameters forever");
- System.out.println("-dir outputdirectory -- output code in outputdirectory");
- System.out.println("-struct structfile -- output structure declarations for repair tool");
- System.out.println("-mainclass -- main function to call");
- System.out.println("-dsm -- distributed shared memory support");
- System.out.println("-precise -- use precise garbage collection");
- System.out.println("-conscheck -- turn on consistency checking");
- System.out.println("-task -- compiler for tasks");
- System.out.println("-thread -- threads");
- System.out.println("-instructionfailures -- insert code for instruction level failures");
- System.out.println("-taskstate -- do task state analysis");
- System.out.println("-flatirtasks -- create dot files for flat IR graphs of tasks");
- System.out.println("-flatirusermethods -- create dot files for flat IR graphs of user methods");
- System.out.println("-flatirlibmethods -- create dot files for flat IR graphs of library class methods");
- System.out.println(" note: -flatirusermethods or -flatirlibmethods currently generate all class method flat IR graphs");
- System.out.println("-ownership -- do ownership analysis");
- System.out.println("-optional -- enable optional arguments");
- System.out.println("-webinterface -- enable web interface");
- System.out.println("-help -- print out help");
- System.exit(0);
- } else {
- readSourceFile(state, args[i]);
- }
+ String outputdir = null;
+ boolean isDistributeInfo = false;
+
+ for(int i=0; i<args.length; i++) {
+ String option=args[i];
+ if (option.equals("-precise"))
+ IR.Flat.BuildCode.GENERATEPRECISEGC=true;
+ else if (option.equals("-prefetch"))
+ state.PREFETCH=true;
+ else if (option.equals("-dir"))
+ IR.Flat.BuildCode.PREFIX=args[++i]+"/";
+ else if (option.equals("-fastcheck"))
+ state.FASTCHECK=true;
+ else if (option.equals("-selfloop"))
+ state.selfloops.add(args[++i]);
+ else if (option.equals("-outputdir"))
+ state.outputdir = args[++i];
+ else if (option.equals("-excprefetch"))
+ state.excprefetch.add(args[++i]);
+ else if (option.equals("-classlibrary"))
+ state.classpath.add(args[++i]);
+ else if(option.equals("-numcore")) {
+ ++i;
+ state.CORENUM = Integer.parseInt(args[i]);
+ } else if (option.equals("-mainclass"))
+ state.main=args[++i];
+ else if (option.equals("-trueprob")) {
+ state.TRUEPROB=Double.parseDouble(args[++i]);
+ } else if (option.equals("-printflat"))
+ State.PRINTFLAT=true;
+ else if (option.equals("-printscheduling"))
+ State.PRINTSCHEDULING=true;
+ else if (option.equals("-printschedulesim"))
+ State.PRINTSCHEDULESIM=true;
+ else if (option.equals("-printcriticalpath"))
+ State.PRINTCRITICALPATH=true;
+ else if (option.equals("-struct"))
+ state.structfile=args[++i];
+ else if (option.equals("-conscheck"))
+ state.CONSCHECK=true;
+ else if (option.equals("-task"))
+ state.TASK=true;
+ else if (option.equals("-abortreaders"))
+ state.ABORTREADERS=true;
+ else if (option.equals("-taskstate"))
+ state.TASKSTATE=true;
+ else if (option.equals("-tagstate"))
+ state.TAGSTATE=true;
+ else if (option.equals("-flatirtasks")) {
+ state.FLATIRGRAPH=true;
+ state.FLATIRGRAPHTASKS=true;
+ } else if (option.equals("-flatirusermethods")) {
+ state.FLATIRGRAPH=true;
+ state.FLATIRGRAPHUSERMETHODS=true;
+ } else if (option.equals("-flatirlibmethods")) {
+ state.FLATIRGRAPH=true;
+ state.FLATIRGRAPHLIBMETHODS=true;
+ } else if (option.equals("-multicore"))
+ state.MULTICORE=true;
+ else if (option.equals("-ownership"))
+ state.OWNERSHIP=true;
+ else if (option.equals("-ownallocdepth")) {
+ state.OWNERSHIPALLOCDEPTH=Integer.parseInt(args[++i]);
+ } else if (option.equals("-ownwritedots")) {
+ state.OWNERSHIPWRITEDOTS=true;
+ if (args[++i].equals("all")) {
+ state.OWNERSHIPWRITEALL=true;
+ }
+ } else if (option.equals("-ownaliasfile"))
+ state.OWNERSHIPALIASFILE=args[++i];
+ else if (option.equals("-optional"))
+ state.OPTIONAL=true;
+ else if (option.equals("-optimize"))
+ state.OPTIMIZE=true;
+ else if (option.equals("-raw"))
+ state.RAW=true;
+ else if (option.equals("-scheduling"))
+ state.SCHEDULING=true;
+ else if (option.equals("-distributioninfo"))
+ isDistributeInfo=true;
+ else if (option.equals("-useprofile"))
+ state.USEPROFILE=true;
+ else if (option.equals("-thread"))
+ state.THREAD=true;
+ else if (option.equals("-dsm"))
+ state.DSM=true;
+ else if (option.equals("-singleTM"))
+ state.SINGLETM=true;
+ else if (option.equals("-webinterface"))
+ state.WEBINTERFACE=true;
+ else if (option.equals("-instructionfailures"))
+ state.INSTRUCTIONFAILURE=true;
+ else if (option.equals("-abcclose"))
+ state.ARRAYBOUNDARYCHECK=false;
+ else if (option.equals("-mlp")) {
+ state.MLP=true;
+ state.OWNERSHIP=true;
+ } else if (option.equals("-mlpdebug")) {
+ state.MLP=true;
+ state.MLPDEBUG=true;
+ state.OWNERSHIP=true;
+ } else if (option.equals("-help")) {
+ System.out.println("-classlibrary classlibrarydirectory -- directory where classlibrary is located");
+ System.out.println("-selfloop task -- this task doesn't self loop its parameters forever");
+ System.out.println("-dir outputdirectory -- output code in outputdirectory");
+ System.out.println("-struct structfile -- output structure declarations for repair tool");
+ System.out.println("-mainclass -- main function to call");
+ System.out.println("-dsm -- distributed shared memory support");
+ System.out.println("-singleTM -- single machine committing transactions");
+ System.out.println("-abortreaders -- abort readers");
+ System.out.println("-precise -- use precise garbage collection");
+ System.out.println("-conscheck -- turn on consistency checking");
+ System.out.println("-task -- compiler for tasks");
+ System.out.println("-fastcheck -- fastcheckpointing for Bristlecone");
+ System.out.println("-thread -- threads");
+ System.out.println("-trueprob <d> -- probability of true branch");
+ System.out.println("-printflat -- print out flat representation");
+ System.out.println("-instructionfailures -- insert code for instruction level failures");
+ System.out.println("-taskstate -- do task state analysis");
+ System.out.println("-flatirtasks -- create dot files for flat IR graphs of tasks");
+ System.out.println("-flatirusermethods -- create dot files for flat IR graphs of user methods");
+ System.out.println("-flatirlibmethods -- create dot files for flat IR graphs of library class methods");
+ System.out.println(" note: -flatirusermethods or -flatirlibmethods currently generate all class method flat IR graphs");
+ System.out.println("-ownership -- do ownership analysis");
+ System.out.println("-ownallocdepth <d> -- set allocation depth for ownership analysis");
+ System.out.println("-ownwritedots <all/final> -- write ownership graphs; can be all results or just final results");
+ System.out.println("-ownaliasfile <filename> -- write a text file showing all detected aliases in program tasks");
+ System.out.println("-optimize -- enable optimizations");
+ System.out.println("-optional -- enable optional arguments");
+ System.out.println("-abcclose close the array boundary check");
+ System.out.println("-scheduling do task scheduling");
+ System.out.println("-mlp build mlp code");
+ System.out.println("-mlp build mlp code, report progress and interim results");
+ System.out.println("-multicore generate multi-core version binary");
+ System.out.println("-numcore set the number of cores (should be used together with -multicore), defaultly set as 1");
+ System.out.println("-raw generate raw version binary (should be used together with -multicore)");
+ System.out.println("-interrupt generate raw version binary with interruption (should be used togethere with -raw)");
+ System.out.println("-rawconfig config raw simulator as 4xn (should be used together with -raw)");
+ System.out.println("-rawpath print out execute path information for raw version (should be used together with -raw)");
+ System.out.println("-useprofile use profiling data for scheduling (should be used together with -raw)");
+ System.out.println("-threadsimulate generate multi-thread simulate version binary");
+ System.out.println("-rawuseio use standard io to output profiling data (should be used together with -raw and -profile), it only works with single core version");
+ System.out.println("-printscheduling -- print out scheduling graphs");
+ System.out.println("-printschedulesim -- print out scheduling simulation result graphs");
+ System.out.println("-webinterface -- enable web interface");
+ System.out.println("-help -- print out help");
+ System.exit(0);
+ } else {
+ sourcefiles.add(args[i]);