Skip to content

Commit 128c888

Browse files
committed
Code generation minor bug fixed. Docker file added.
1 parent 834d980 commit 128c888

File tree

3 files changed

+91
-28
lines changed

3 files changed

+91
-28
lines changed

Dockerfile

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Ubuntu 14.04 as base OS
2+
FROM ubuntu:14.04
3+
MAINTAINER Maaz Ahmad
4+
5+
# Install dependencies
6+
RUN apt-get update && apt-get -y install curl
7+
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
8+
RUN echo "deb http://download.mono-project.com/repo/debian wheezy main" | tee /etc/apt/sources.list.d/mono-xamarin.list
9+
RUN curl -sL https://deb.nodesource.com/setup_6.x | bash -
10+
RUN apt-get update && apt-get -y install \
11+
bash \
12+
g++ \
13+
flex \
14+
bison \
15+
make \
16+
ant \
17+
openjdk-7-jdk \
18+
nodejs \
19+
unzip \
20+
mono-complete \
21+
git \
22+
wget
23+
24+
# Install SKETCH
25+
RUN wget "http://people.csail.mit.edu/asolar/sketch-1.7.2.tar.gz"
26+
RUN tar -xvzf sketch-1.7.2.tar.gz
27+
RUN rm sketch-1.7.2.tar.gz
28+
WORKDIR sketch-1.7.2/sketch-backend/
29+
RUN chmod +x ./configure
30+
RUN ./configure
31+
RUN make
32+
WORKDIR ../../
33+
RUN chmod a+rwx sketch-1.7.2/*
34+
ENV PATH $PATH:/sketch-1.7.2/sketch-frontend/
35+
ENV SKETCH_HOME /sketch-1.7.2/sketch-frontend/runtime
36+
37+
# Install Dafny
38+
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"
39+
RUN unzip dafny-1.9.7.zip -d .
40+
RUN rm dafny-1.9.7.zip
41+
RUN chmod -R a+rwx dafny/*
42+
ENV PATH $PATH:/dafny/
43+
44+
# Clone CASPER
45+
RUN git clone https://github.com/uwplse/Casper.git
46+
WORKDIR Casper/
47+
RUN git reset --hard 834d980
48+
RUN ant

compiler/src/casper/types/ConstantNode.java

+1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ public boolean contains(String exp) {
3636
@Override
3737
public void getIndexes(String arrname, Map<String, List<CustomASTNode>> indexes) {
3838
}
39+
3940
}

compiler/src/casper/visit/GenerateSparkCode.java

+42-28
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@ public Node leave(Node old, Node n, NodeVisitor v){
7979
template = template.replace("<input-name>", inputDataName+"_"+lcName);
8080
template = template.replace(inputDataName+"["+lcName+"]", inputDataName+"_"+lcName);
8181

82+
for(String constVar : ext.constMapping.keySet()){
83+
template = template.replace(ext.constMapping.get(constVar), constVar);
84+
}
85+
8286
for(Variable inVar : ext.inputVars){
8387
if(!ext.outputVars.contains(inVar) && inVar.category != Variable.ARRAY_ACCESS)
8488
template = template.replaceAll("\\b"+inVar.varName+"\\b",inVar.varName+"_final");
@@ -171,41 +175,51 @@ private String generateCreateRDD(MyWhileExt ext) {
171175

172176
private String generateMapEmits(MyWhileExt ext) {
173177
String emits = "";
174-
for(GenerateScaffold.KvPair kvp : ext.mapEmits.get("noCondition")){
175-
// Fix function calls
176-
for(SketchCall call : ext.methodOperators){
177-
Pattern r = Pattern.compile("^("+call.name+")\\((..*)\\)$");
178-
Matcher m;
179-
180-
m = r.matcher(kvp.key);
181-
if(m.find()){
182-
System.err.println("key:" + m);
178+
for(String cond : ext.mapEmits.keySet()){
179+
for(GenerateScaffold.KvPair kvp : ext.mapEmits.get(cond)){
180+
// Fix function calls
181+
for(SketchCall call : ext.methodOperators){
182+
Pattern r = Pattern.compile("^("+call.name+")\\((..*)\\)$");
183+
Matcher m;
184+
185+
m = r.matcher(kvp.key);
186+
if(m.find()){
187+
}
188+
189+
m = r.matcher(kvp.key2);
190+
if(m.find()){
191+
}
192+
193+
m = r.matcher(kvp.value);
194+
if(m.find()){
195+
if(call.target.equals("first-arg")){
196+
String target = m.group(2).substring(0, m.group(2).indexOf(","));
197+
String args = m.group(2).substring(m.group(2).indexOf(",")+1, m.group(2).length());
198+
kvp.value = kvp.value.replace(m.group(0), target+"."+call.nameOrig+"("+args+")");
199+
}
200+
else{
201+
String args = m.group(2);
202+
kvp.value = kvp.value.replace(m.group(0), call.nameOrig+"("+args+")");
203+
}
204+
}
183205
}
184-
185-
m = r.matcher(kvp.key2);
186-
if(m.find()){
187-
System.err.println("key2:" + m);
206+
if(kvp.key2 == ""){
207+
if(cond.equals("noCondition")){
208+
emits += "emits.add(new Tuple2("+kvp.key+","+kvp.value+"));\n";
209+
}
210+
else{
211+
emits += "if("+cond+") emits.add(new Tuple2("+kvp.key+","+kvp.value+"));\n";
212+
}
188213
}
189-
190-
m = r.matcher(kvp.value);
191-
if(m.find()){
192-
if(call.target.equals("first-arg")){
193-
String target = m.group(2).substring(0, m.group(2).indexOf(","));
194-
String args = m.group(2).substring(m.group(2).indexOf(",")+1, m.group(2).length());
195-
kvp.value = kvp.value.replace(m.group(0), target+"."+call.nameOrig+"("+args+")");
214+
else{
215+
if(cond.equals("noCondition")){
216+
emits += "emits.add(new Tuple2(new Tuple2("+kvp.key+","+kvp.key2+"), "+kvp.value+"));\n";
196217
}
197218
else{
198-
String args = m.group(2);
199-
kvp.value = kvp.value.replace(m.group(0), call.nameOrig+"("+args+")");
219+
emits += "if("+cond+") emits.add(new Tuple2(new Tuple2("+kvp.key+","+kvp.key2+"), "+kvp.value+"));\n";
200220
}
201221
}
202222
}
203-
if(kvp.key2 == ""){
204-
emits += "emits.add(new Tuple2("+kvp.key+","+kvp.value+"));\n";
205-
}
206-
else{
207-
emits += "emits.add(new Tuple2(new Tuple2("+kvp.key+","+kvp.key2+"), "+kvp.value+"));\n";
208-
}
209223
}
210224
return emits;
211225
}

0 commit comments

Comments
 (0)