Skip to content

Commit

Permalink
Code generation minor bug fixed. Docker file added.
Browse files Browse the repository at this point in the history
  • Loading branch information
maaz139 committed Sep 9, 2016
1 parent 834d980 commit 128c888
Show file tree
Hide file tree
Showing 3 changed files with 91 additions and 28 deletions.
48 changes: 48 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Ubuntu 14.04 as base OS
FROM ubuntu:14.04
MAINTAINER Maaz Ahmad

# Install dependencies
RUN apt-get update && apt-get -y install curl
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
RUN apt-get update && apt-get -y install \
bash \
g++ \
flex \
bison \
make \
ant \
openjdk-7-jdk \
nodejs \
unzip \
mono-complete \
git \
wget

# Install SKETCH
RUN wget "http://people.csail.mit.edu/asolar/sketch-1.7.2.tar.gz"
RUN tar -xvzf sketch-1.7.2.tar.gz
RUN rm sketch-1.7.2.tar.gz
WORKDIR sketch-1.7.2/sketch-backend/
RUN chmod +x ./configure
RUN ./configure
RUN make
WORKDIR ../../
RUN chmod a+rwx sketch-1.7.2/*
ENV PATH $PATH:/sketch-1.7.2/sketch-frontend/
ENV SKETCH_HOME /sketch-1.7.2/sketch-frontend/runtime

# Install Dafny
RUN wget -O dafny-1.9.7.zip "http://download-codeplex.sec.s-msft.com/Download/Release?ProjectName=dafny&DownloadId=1559952&FileTime=131040300896400000&Build=21031"
RUN unzip dafny-1.9.7.zip -d .
RUN rm dafny-1.9.7.zip
RUN chmod -R a+rwx dafny/*
ENV PATH $PATH:/dafny/

# Clone CASPER
RUN git clone https://github.com/uwplse/Casper.git
WORKDIR Casper/
RUN git reset --hard 834d980
RUN ant
1 change: 1 addition & 0 deletions compiler/src/casper/types/ConstantNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,5 @@ public boolean contains(String exp) {
@Override
public void getIndexes(String arrname, Map<String, List<CustomASTNode>> indexes) {
}

}
70 changes: 42 additions & 28 deletions compiler/src/casper/visit/GenerateSparkCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,10 @@ public Node leave(Node old, Node n, NodeVisitor v){
template = template.replace("<input-name>", inputDataName+"_"+lcName);
template = template.replace(inputDataName+"["+lcName+"]", inputDataName+"_"+lcName);

for(String constVar : ext.constMapping.keySet()){
template = template.replace(ext.constMapping.get(constVar), constVar);
}

for(Variable inVar : ext.inputVars){
if(!ext.outputVars.contains(inVar) && inVar.category != Variable.ARRAY_ACCESS)
template = template.replaceAll("\\b"+inVar.varName+"\\b",inVar.varName+"_final");
Expand Down Expand Up @@ -171,41 +175,51 @@ private String generateCreateRDD(MyWhileExt ext) {

private String generateMapEmits(MyWhileExt ext) {
String emits = "";
for(GenerateScaffold.KvPair kvp : ext.mapEmits.get("noCondition")){
// Fix function calls
for(SketchCall call : ext.methodOperators){
Pattern r = Pattern.compile("^("+call.name+")\\((..*)\\)$");
Matcher m;

m = r.matcher(kvp.key);
if(m.find()){
System.err.println("key:" + m);
for(String cond : ext.mapEmits.keySet()){
for(GenerateScaffold.KvPair kvp : ext.mapEmits.get(cond)){
// Fix function calls
for(SketchCall call : ext.methodOperators){
Pattern r = Pattern.compile("^("+call.name+")\\((..*)\\)$");
Matcher m;

m = r.matcher(kvp.key);
if(m.find()){
}

m = r.matcher(kvp.key2);
if(m.find()){
}

m = r.matcher(kvp.value);
if(m.find()){
if(call.target.equals("first-arg")){
String target = m.group(2).substring(0, m.group(2).indexOf(","));
String args = m.group(2).substring(m.group(2).indexOf(",")+1, m.group(2).length());
kvp.value = kvp.value.replace(m.group(0), target+"."+call.nameOrig+"("+args+")");
}
else{
String args = m.group(2);
kvp.value = kvp.value.replace(m.group(0), call.nameOrig+"("+args+")");
}
}
}

m = r.matcher(kvp.key2);
if(m.find()){
System.err.println("key2:" + m);
if(kvp.key2 == ""){
if(cond.equals("noCondition")){
emits += "emits.add(new Tuple2("+kvp.key+","+kvp.value+"));\n";
}
else{
emits += "if("+cond+") emits.add(new Tuple2("+kvp.key+","+kvp.value+"));\n";
}
}

m = r.matcher(kvp.value);
if(m.find()){
if(call.target.equals("first-arg")){
String target = m.group(2).substring(0, m.group(2).indexOf(","));
String args = m.group(2).substring(m.group(2).indexOf(",")+1, m.group(2).length());
kvp.value = kvp.value.replace(m.group(0), target+"."+call.nameOrig+"("+args+")");
else{
if(cond.equals("noCondition")){
emits += "emits.add(new Tuple2(new Tuple2("+kvp.key+","+kvp.key2+"), "+kvp.value+"));\n";
}
else{
String args = m.group(2);
kvp.value = kvp.value.replace(m.group(0), call.nameOrig+"("+args+")");
emits += "if("+cond+") emits.add(new Tuple2(new Tuple2("+kvp.key+","+kvp.key2+"), "+kvp.value+"));\n";
}
}
}
if(kvp.key2 == ""){
emits += "emits.add(new Tuple2("+kvp.key+","+kvp.value+"));\n";
}
else{
emits += "emits.add(new Tuple2(new Tuple2("+kvp.key+","+kvp.key2+"), "+kvp.value+"));\n";
}
}
return emits;
}
Expand Down

0 comments on commit 128c888

Please sign in to comment.