Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 1d77e06

Browse filesBrowse files
committed
Add automatic typeCast for -,*,/ and %
1 parent b258446 commit 1d77e06
Copy full SHA for 1d77e06

File tree

Expand file treeCollapse file tree

4 files changed

+32
-5
lines changed
Open diff view settings
Filter options
Expand file treeCollapse file tree

4 files changed

+32
-5
lines changed
Open diff view settings
Collapse file

‎src/symjava/symbolic/Divide.java‎

Copy file name to clipboardExpand all lines: src/symjava/symbolic/Divide.java
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import symjava.symbolic.Expr.TYPE;
1515
import symjava.symbolic.arity.BinaryOp;
16+
import symjava.symbolic.utils.BytecodeUtils;
1617
import symjava.symbolic.utils.Utils;
1718

1819
/**
@@ -116,8 +117,10 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
116117
InstructionList il, Map<String, Integer> argsMap, int argsStartPos,
117118
Map<Expr, Integer> funcRefsMap) {
118119
InstructionHandle startPos = arg1.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
119-
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
120120
TYPE ty = Utils.getType(arg1.getType(), arg2.getType());
121+
BytecodeUtils.typeCase(il, arg1.getType(), ty);
122+
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
123+
BytecodeUtils.typeCase(il, arg2.getType(), ty);
121124
if(ty == TYPE.DOUBLE)
122125
il.append(InstructionConstants.DDIV);
123126
else if(ty == TYPE.INT)
Collapse file

‎src/symjava/symbolic/Multiply.java‎

Copy file name to clipboardExpand all lines: src/symjava/symbolic/Multiply.java
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import symjava.symbolic.Expr.TYPE;
1515
import symjava.symbolic.arity.BinaryOp;
16+
import symjava.symbolic.utils.BytecodeUtils;
1617
import symjava.symbolic.utils.Utils;
1718

1819
public class Multiply extends BinaryOp {
@@ -180,8 +181,10 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
180181
InstructionList il, Map<String, Integer> argsMap, int argsStartPos,
181182
Map<Expr, Integer> funcRefsMap) {
182183
InstructionHandle startPos = arg1.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
183-
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
184184
TYPE ty = Utils.getType(arg1.getType(), arg2.getType());
185+
BytecodeUtils.typeCase(il, arg1.getType(), ty);
186+
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
187+
BytecodeUtils.typeCase(il, arg2.getType(), ty);
185188
if(ty == TYPE.DOUBLE)
186189
il.append(InstructionConstants.DMUL);
187190
else if(ty == TYPE.INT)
Collapse file

‎src/symjava/symbolic/Remainder.java‎

Copy file name to clipboardExpand all lines: src/symjava/symbolic/Remainder.java
+20-2Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package symjava.symbolic;
22

3+
import static com.sun.org.apache.bcel.internal.generic.InstructionConstants.*;
4+
35
import java.util.Map;
46

57
import com.sun.org.apache.bcel.internal.generic.ConstantPoolGen;
@@ -9,7 +11,10 @@
911
import com.sun.org.apache.bcel.internal.generic.InstructionList;
1012
import com.sun.org.apache.bcel.internal.generic.MethodGen;
1113

14+
import symjava.symbolic.Expr.TYPE;
1215
import symjava.symbolic.arity.BinaryOp;
16+
import symjava.symbolic.utils.BytecodeUtils;
17+
import symjava.symbolic.utils.Utils;
1318

1419
public class Remainder extends BinaryOp {
1520
public Remainder(Expr arg1, Expr arg2) {
@@ -39,8 +44,21 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
3944
ConstantPoolGen cp, InstructionFactory factory,
4045
InstructionList il, Map<String, Integer> argsMap, int argsStartPos,
4146
Map<Expr, Integer> funcRefsMap) {
42-
arg1.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
47+
InstructionHandle startPos = arg1.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
48+
TYPE ty = Utils.getType(arg1.getType(), arg2.getType());
49+
BytecodeUtils.typeCase(il, arg1.getType(), ty);
4350
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
44-
return il.append(InstructionConstants.DREM);
51+
BytecodeUtils.typeCase(il, arg2.getType(), ty);
52+
if(ty == TYPE.DOUBLE)
53+
il.append(DREM);
54+
else if(ty == TYPE.INT)
55+
il.append(IREM);
56+
else if(ty == TYPE.LONG)
57+
il.append(LREM);
58+
else if(ty == TYPE.FLOAT)
59+
il.append(FREM);
60+
else
61+
il.append(IREM);
62+
return startPos;
4563
}
4664
}
Collapse file

‎src/symjava/symbolic/Subtract.java‎

Copy file name to clipboardExpand all lines: src/symjava/symbolic/Subtract.java
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import symjava.symbolic.Expr.TYPE;
1414
import symjava.symbolic.arity.BinaryOp;
15+
import symjava.symbolic.utils.BytecodeUtils;
1516
import symjava.symbolic.utils.Utils;
1617

1718
public class Subtract extends BinaryOp {
@@ -90,8 +91,10 @@ public InstructionHandle bytecodeGen(String clsName, MethodGen mg,
9091
InstructionList il, Map<String, Integer> argsMap, int argsStartPos,
9192
Map<Expr, Integer> funcRefsMap) {
9293
InstructionHandle startPos = arg1.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
93-
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
9494
TYPE ty = Utils.getType(arg1.getType(), arg2.getType());
95+
BytecodeUtils.typeCase(il, arg1.getType(), ty);
96+
arg2.bytecodeGen(clsName, mg, cp, factory, il, argsMap, argsStartPos, funcRefsMap);
97+
BytecodeUtils.typeCase(il, arg2.getType(), ty);
9598
if(ty == TYPE.DOUBLE)
9699
il.append(InstructionConstants.DSUB);
97100
else if(ty == TYPE.INT)

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.