Skip to content

Commit b258446

Browse files
committed
Make args() abstract in Expr
1 parent f5678e4 commit b258446

24 files changed

+155
-81
lines changed

src/lambdacloud/core/CloudBase.java

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
import symjava.symbolic.Expr;
1111

12-
public class CloudBase extends Expr {
12+
public abstract class CloudBase extends Expr {
1313

1414
@Override
1515
public Expr simplify() {
@@ -35,68 +35,5 @@ public TYPE getType() {
3535
return null;
3636
}
3737

38-
public int declareLocal(CloudVar var, MethodGen mg, InstructionList il) {
39-
//variable name
40-
//initial value
41-
//index in local variable table (LVT)
42-
if(var instanceof CloudInt) {
43-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
44-
Type.INT, null, null);
45-
int idx = lg.getIndex();
46-
//il.append(InstructionConstants.ICONST_0);
47-
//lg.setStart(il.append(new DSTORE(idx)));
48-
return idx;
49-
} else if(var instanceof CloudLong) {
50-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
51-
Type.LONG, null, null);
52-
int idx = lg.getIndex();
53-
il.append(InstructionConstants.LCONST_0);
54-
lg.setStart(il.append(new DSTORE(idx)));
55-
return idx;
56-
57-
} else if(var instanceof CloudFloat) {
58-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
59-
Type.FLOAT, null, null);
60-
int idx = lg.getIndex();
61-
il.append(InstructionConstants.FCONST_0);
62-
lg.setStart(il.append(new DSTORE(idx)));
63-
return idx;
64-
} else if(var instanceof CloudDouble) {
65-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
66-
Type.DOUBLE, null, null);
67-
int idx = lg.getIndex();
68-
il.append(InstructionConstants.DCONST_0);
69-
lg.setStart(il.append(new DSTORE(idx)));
70-
return idx;
71-
} else if(var instanceof CloudBoolean) {
72-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
73-
Type.BOOLEAN, null, null);
74-
int idx = lg.getIndex();
75-
il.append(InstructionConstants.ICONST_0);
76-
lg.setStart(il.append(new DSTORE(idx)));
77-
return idx;
78-
} else if(var instanceof CloudChar) {
79-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
80-
Type.CHAR, null, null);
81-
int idx = lg.getIndex();
82-
il.append(InstructionConstants.ICONST_0);
83-
lg.setStart(il.append(new DSTORE(idx)));
84-
return idx;
85-
} else if(var instanceof CloudByte) {
86-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
87-
Type.BYTE, null, null);
88-
int idx = lg.getIndex();
89-
il.append(InstructionConstants.ICONST_0);
90-
lg.setStart(il.append(new DSTORE(idx)));
91-
return idx;
92-
} else if(var instanceof CloudShort) {
93-
LocalVariableGen lg = mg.addLocalVariable(var.getLabel(),
94-
Type.SHORT, null, null);
95-
int idx = lg.getIndex();
96-
il.append(InstructionConstants.ICONST_0);
97-
lg.setStart(il.append(new DSTORE(idx)));
98-
return idx;
99-
}
100-
throw new RuntimeException();
101-
}
38+
10239
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
package lambdacloud.core;
22

3+
import symjava.symbolic.Expr;
4+
35
public class CloudBreak extends CloudBase {
46

7+
@Override
8+
public Expr[] args() {
9+
// TODO Auto-generated method stub
10+
return null;
11+
}
12+
513
}

src/lambdacloud/core/CloudFunc.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,4 +172,9 @@ public BytecodeVecFunc getBytecodeVecFunc() {
172172
public BytecodeBatchFunc getBytecodeBatchFunc() {
173173
return this.batchFunc;
174174
}
175+
@Override
176+
public Expr[] args() {
177+
// TODO Auto-generated method stub
178+
return null;
179+
}
175180
}

src/lambdacloud/core/CloudIf.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,4 +67,13 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
6767
}
6868
return endif;
6969
}
70+
71+
@Override
72+
public Expr[] args() {
73+
List<Expr> ret = new ArrayList<Expr>();
74+
ret.add(condition);
75+
ret.addAll(this.trueStmts);
76+
ret.addAll(this.falseStmts);
77+
return ret.toArray(new Expr[0]);
78+
}
7079
}

src/lambdacloud/core/CloudLoop.java

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -85,16 +85,11 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
8585
Relation cond = (Relation)conditionExpr;
8686

8787
// Declare local variables
88-
List<Expr> allExprs = new ArrayList<Expr>();
89-
allExprs.add(initExpr);
90-
allExprs.add(conditionExpr);
91-
allExprs.add(incrementExpr);
92-
allExprs.addAll(bodyList);
93-
List<Expr> vars = Utils.extractSymbols(allExprs.toArray(new Expr[0]));
88+
List<Expr> vars = Utils.extractSymbols(args());
9489
for(Expr var : vars) {
9590
if(var instanceof CloudVar) {
9691
CloudVar cv = (CloudVar)var;
97-
int indexLVT = declareLocal(cv, mg, il);
92+
int indexLVT = BytecodeUtils.declareLocal(cv, mg, il);
9893
cv.setLVTIndex(indexLVT);
9994
}
10095
}
@@ -179,4 +174,14 @@ public BytecodeFunc compile(Expr[] args) {
179174
public void apply(CSD ...inputs) {
180175

181176
}
177+
178+
@Override
179+
public Expr[] args() {
180+
List<Expr> ret = new ArrayList<Expr>();
181+
ret.add(this.initExpr);
182+
ret.add(this.conditionExpr);
183+
ret.add(this.incrementExpr);
184+
ret.addAll(this.bodyList);
185+
return ret.toArray(new Expr[0]);
186+
}
182187
}

src/lambdacloud/core/CloudStatements.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,9 @@ public CloudStatements append(Expr expr) {
1616
public void apply(CSD ...inputs) {
1717

1818
}
19+
20+
@Override
21+
public Expr[] args() {
22+
return this.exprList.toArray(new Expr[0]);
23+
}
1924
}

src/lambdacloud/core/operators/OPAsign.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ public OPAsign(Expr lhs, Expr rhs) {
3131
this.label = lhs + " = " + rhs;
3232
}
3333

34-
public void compile() {
35-
36-
}
37-
3834
@Override
3935
public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
4036
ConstantPoolGen cp, InstructionFactory factory,
@@ -65,4 +61,9 @@ else if(ty == TYPE.FLOAT)
6561
}
6662
return startPos;
6763
}
64+
65+
@Override
66+
public Expr[] args() {
67+
return new Expr[]{lhs, rhs};
68+
}
6869
}

src/lambdacloud/core/operators/OpIndex.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@ public OpIndex(Expr array, Expr index) {
1010
this.array = array;
1111
this.index = index;
1212
}
13-
14-
public void compile() {
15-
13+
@Override
14+
public Expr[] args() {
15+
return new Expr[]{array, index};
1616
}
1717

18+
1819
}

src/symjava/math/Div.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,5 +85,11 @@ public Expr diff(Expr expr) {
8585
// TODO Auto-generated method stub
8686
return null;
8787
}
88+
89+
@Override
90+
public TYPE getType() {
91+
// TODO Auto-generated method stub
92+
return null;
93+
}
8894

8995
}

src/symjava/math/Dot.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,4 +140,16 @@ public Expr getExpr() {
140140
return Utils.addListToExpr(list).simplify();
141141
}
142142
}
143+
144+
@Override
145+
public Expr[] args() {
146+
// TODO Auto-generated method stub
147+
return null;
148+
}
149+
150+
@Override
151+
public TYPE getType() {
152+
// TODO Auto-generated method stub
153+
return null;
154+
}
143155
}

0 commit comments

Comments
 (0)