From: jjenista Date: Tue, 31 Mar 2009 20:56:27 +0000 (+0000) Subject: Added mlp runtime skeleton, flags to build it, syntax option to name sese blocks X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;ds=sidebyside;h=36bac4fbcfabb5d2d2cbba32f6d42cd1f1c20f10;p=IRC.git Added mlp runtime skeleton, flags to build it, syntax option to name sese blocks --- diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 6ef224b1..4b449885 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -38,6 +38,7 @@ public class BuildCode { public static String PREFIX=""; public static String arraytype="ArrayObject"; public static int flagcount = 0; + public boolean MLP=false; Virtual virtualcalls; TypeUtil typeutil; protected int maxtaskparams=0; @@ -74,6 +75,8 @@ public class BuildCode { this.backuptable=new Hashtable(); this.reverttable=new Hashtable(); } + + this.MLP=st.MLP; } /** The buildCode method outputs C code for all the methods. The Flat @@ -128,6 +131,7 @@ public class BuildCode { outmethodheader.println("#include \"abortreaders.h\""); outmethodheader.println("#include "); } + /* Output Structures */ outputStructs(outstructs); @@ -347,10 +351,13 @@ public class BuildCode { if (state.CONSCHECK) { outmethod.println("#include \"checkers.h\""); } + if (state.MLP) { + outmethod.println("#include \"mlp_runtime.h\""); + } + //Store the sizes of classes & array elements generateSizeArray(outmethod); - //Store table of supertypes generateSuperTypeTable(outmethod); @@ -1515,11 +1522,11 @@ public class BuildCode { return; case FKind.FlatSESEEnterNode: - generateFlatSESEEnterNode(fm, lb, (FlatSESEEnterNode) fn, output); + if( MLP ) generateFlatSESEEnterNode(fm, lb, (FlatSESEEnterNode) fn, output); return; case FKind.FlatSESEExitNode: - generateFlatSESEExitNode(fm, lb, (FlatSESEExitNode) fn, output); + if( MLP ) generateFlatSESEExitNode(fm, lb, (FlatSESEExitNode) fn, output); return; case FKind.FlatGlobalConvNode: @@ -1871,11 +1878,11 @@ public class BuildCode { } public void generateFlatSESEEnterNode(FlatMethod fm, LocalityBinding lb, FlatSESEEnterNode faen, PrintWriter output) { - + output.println("mlpEnqueue( (struct SESE*)0 );"); } public void generateFlatSESEExitNode(FlatMethod fm, LocalityBinding lb, FlatSESEExitNode faen, PrintWriter output) { - + output.println("mlpNotifyExit( (struct SESE*)0 );"); } private void generateFlatCheckNode(FlatMethod fm, LocalityBinding lb, FlatCheckNode fcn, PrintWriter output) { diff --git a/Robust/src/IR/Flat/FlatSESEEnterNode.java b/Robust/src/IR/Flat/FlatSESEEnterNode.java index a56d8972..15a1606f 100644 --- a/Robust/src/IR/Flat/FlatSESEEnterNode.java +++ b/Robust/src/IR/Flat/FlatSESEEnterNode.java @@ -10,7 +10,7 @@ public class FlatSESEEnterNode extends FlatNode { public FlatSESEEnterNode( SESENode sn ) { this.id=identifier++; - treeNode = sn; + treeNode = sn; } public SESENode getTreeNode() { @@ -21,8 +21,15 @@ public class FlatSESEEnterNode extends FlatNode { return id; } + public String getPrettyIdentifier() { + if( treeNode.getID() != null ) { + return treeNode.getID(); + } + return ""+id; + } + public String toString() { - return "sese "+id+" enter"; + return "sese "+getPrettyIdentifier()+" enter"; } public void setFlatExit( FlatSESEExitNode fsexn ) { diff --git a/Robust/src/IR/Flat/FlatSESEExitNode.java b/Robust/src/IR/Flat/FlatSESEExitNode.java index 7aa954f4..bcfd0451 100644 --- a/Robust/src/IR/Flat/FlatSESEExitNode.java +++ b/Robust/src/IR/Flat/FlatSESEExitNode.java @@ -24,7 +24,7 @@ public class FlatSESEExitNode extends FlatNode { public String toString() { assert enter != null; - return "sese "+enter.getIdentifier()+" exit"; + return "sese "+enter.getPrettyIdentifier()+" exit"; } public int kind() { diff --git a/Robust/src/IR/State.java b/Robust/src/IR/State.java index 9cfe1633..9a911461 100644 --- a/Robust/src/IR/State.java +++ b/Robust/src/IR/State.java @@ -72,6 +72,7 @@ public class State { public boolean THREAD=false; public boolean CONSCHECK=false; public boolean INSTRUCTIONFAILURE=false; + public boolean MLP=false; public static double TRUEPROB=0.8; public static boolean PRINTFLAT=false; public static boolean PRINTSCHEDULING=false; diff --git a/Robust/src/IR/Tree/BuildIR.java b/Robust/src/IR/Tree/BuildIR.java index 320f6663..5293f865 100644 --- a/Robust/src/IR/Tree/BuildIR.java +++ b/Robust/src/IR/Tree/BuildIR.java @@ -734,8 +734,11 @@ public class BuildIR { BlockNode body=parseSingleBlock(pn.getChild("statement").getFirstChild()); blockstatements.add(new LoopNode(condition,body,LoopNode.DOWHILELOOP)); } else if (isNode(pn,"sese")) { - SESENode start=new SESENode(); - SESENode end =new SESENode(); + ParseNode pnID=pn.getChild("identifier"); + String stID=null; + if( pnID != null ) { stID=pnID.getFirstChild().getTerminal(); } + SESENode start=new SESENode(stID); + SESENode end =new SESENode(stID); start.setEnd( end ); end.setStart( start ); blockstatements.add(start); diff --git a/Robust/src/IR/Tree/SESENode.java b/Robust/src/IR/Tree/SESENode.java index 64d0dfbb..423a331b 100644 --- a/Robust/src/IR/Tree/SESENode.java +++ b/Robust/src/IR/Tree/SESENode.java @@ -4,6 +4,8 @@ import IR.Flat.FlatSESEExitNode; public class SESENode extends BlockStatementNode { + protected String id; + protected SESENode start; protected SESENode end; @@ -11,13 +13,17 @@ public class SESENode extends BlockStatementNode { protected FlatSESEExitNode exit; - public SESENode() { + public SESENode( String id ) { + this.id = id; start = null; end = null; enter = null; exit = null; } + public String getID() { + return id; + } public void setStart( SESENode n ) { start = n; diff --git a/Robust/src/Main/Main.java b/Robust/src/Main/Main.java index f913eebc..0430dd0e 100644 --- a/Robust/src/Main/Main.java +++ b/Robust/src/Main/Main.java @@ -145,6 +145,8 @@ public class Main { state.INSTRUCTIONFAILURE=true; else if (option.equals("-abcclose")) state.ARRAYBOUNDARYCHECK=false; + else if (option.equals("-mlp")) + state.MLP=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"); @@ -173,6 +175,7 @@ public class Main { 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("-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)"); diff --git a/Robust/src/Parse/java14.cup b/Robust/src/Parse/java14.cup index 299a5e9b..4ddaac56 100644 --- a/Robust/src/Parse/java14.cup +++ b/Robust/src/Parse/java14.cup @@ -1369,17 +1369,17 @@ atomic_statement ::= :} ; sese_statement ::= - -// SESE variable_declarator_id:id LBRACE statement:st RBRACE {: - SESE block:blk {: ParseNode pn = new ParseNode("sese"); - -// pn.addChild("identifier").addChild(id); - pn.addChild("body").addChild(blk); RESULT=pn; :} + | SESE variable_declarator_id:id block:blk {: + ParseNode pn = new ParseNode("sese"); + pn.addChild("body").addChild(blk); + pn.addChild("identifier").addChild(id); + RESULT=pn; + :} ; //try_statement ::= // TRY block catches diff --git a/Robust/src/Runtime/mlp_runtime.c b/Robust/src/Runtime/mlp_runtime.c new file mode 100644 index 00000000..eae03839 --- /dev/null +++ b/Robust/src/Runtime/mlp_runtime.c @@ -0,0 +1,31 @@ +#include +#include +#include "mlp_runtime.h" + + +struct SESE* root; + + +void mlpIssue(); + + +struct SESE* mlpInit() { + return root; +} + + +void mlpEnqueue( struct SESE* sese ) { + printf( "mlp enqueue\n" ); +} + +void mlpBlock( struct SESE* sese ) { + +} + +void mlpNotifyExit( struct SESE* sese ) { + printf( "mlp notify exit\n" ); +} + +void mlpIssue() { + +} diff --git a/Robust/src/Runtime/mlp_runtime.h b/Robust/src/Runtime/mlp_runtime.h new file mode 100644 index 00000000..85e6b9b0 --- /dev/null +++ b/Robust/src/Runtime/mlp_runtime.h @@ -0,0 +1,14 @@ +#ifndef __MLP_RUNTIME__ +#define __MLP_RUNTIME__ + +struct SESE { + +}; + +struct SESE* mlpInit(); + +void mlpEnqueue ( struct SESE* sese ); +void mlpBlock ( struct SESE* sese ); +void mlpNotifyExit( struct SESE* sese ); + +#endif /* __MLP_RUNTIME__ */ diff --git a/Robust/src/Tests/mlp/tinyTest/makefile b/Robust/src/Tests/mlp/tinyTest/makefile index 335dd500..402bc180 100644 --- a/Robust/src/Tests/mlp/tinyTest/makefile +++ b/Robust/src/Tests/mlp/tinyTest/makefile @@ -3,7 +3,7 @@ PROGRAM=test SOURCE_FILES=$(PROGRAM).java BUILDSCRIPT=~/research/Robust/src/buildscript -BSFLAGS= -mainclass Test -ownership -ownallocdepth 1 -ownwritedots final -enable-assertions -flatirusermethods -ownaliasfile aliases.txt #-justanalyze -recover +BSFLAGS= -mlp -mainclass Test -ownership -ownallocdepth 1 -ownwritedots final -enable-assertions -flatirusermethods -ownaliasfile aliases.txt #-justanalyze -recover all: $(PROGRAM).bin diff --git a/Robust/src/Tests/mlp/tinyTest/test.java b/Robust/src/Tests/mlp/tinyTest/test.java index 81be3a43..e75fa898 100644 --- a/Robust/src/Tests/mlp/tinyTest/test.java +++ b/Robust/src/Tests/mlp/tinyTest/test.java @@ -4,8 +4,9 @@ public class Test { int n = 10; - sese { - + sese s0 { + + /* int[] a = new int[n]; int[] b = new int[n]; int[] c = new int[n]; @@ -31,6 +32,9 @@ public class Test { } System.out.println( "total is "+total ); + */ + + int x = n; } } diff --git a/Robust/src/buildscript b/Robust/src/buildscript index e740a42e..b07b3485 100755 --- a/Robust/src/buildscript +++ b/Robust/src/buildscript @@ -60,6 +60,7 @@ DSMFLAG=false NOJAVA=false CHECKFLAG=false RECOVERFLAG=false +MLPFLAG=false MULTICOREFLAG=false TRANSSTATSFLAG=false RAWFLAG=false @@ -215,6 +216,9 @@ JAVAOPTS="$JAVAOPTS -webinterface" elif [[ $1 = '-instructionfailures' ]] then JAVAOPTS="$JAVAOPTS -instructionfailures" +elif [[ $1 = '-mlp' ]] +then +JAVAOPTS="$JAVAOPTS -mlp" elif [[ $1 = '-check' ]] then CHECKFLAG=true @@ -475,6 +479,11 @@ then FILES="$FILES $ROBUSTROOT/Runtime/localobjects.c" fi +if $MLP +then +FILES="$FILES $ROBUSTROOT/Runtime/mlp_runtime.c" +fi + if $RECOVERFLAG then EXTRAOPTIONS="$EXTRAOPTIONS -DTASK"