fixed issue in boxing

master
Sanjar Ahmadov 3 years ago
parent 69939f08c3
commit 398563d8ba

@ -129,7 +129,7 @@ public class CodeGenImpl extends CodeGenBase
StmtAnalyzer stmtAnalyzer = new StmtAnalyzer(funcInfo);
int emptySlotNum = 4;
// backend.emitLW(A0, SP, varSlotMap.get(varName)) to load the variable using its name
// example usage: backend.emitLW(A0, SP, varSlotMap.get(varName)) to load the variable using its name
Map<String, Integer> varSlotMap = stmtAnalyzer.varSlotMap;
for (int i = 0; i < funcInfo.getParams().size(); i++) {
@ -214,6 +214,7 @@ public class CodeGenImpl extends CodeGenBase
private Map<SymbolInfo, Integer> offsetMap = new HashMap<>();
/** Variable to keep track of slots of stored variables on stack */
// example usage: backend.emitLW(A0, SP, varSlotMap.get(varName)) to load the variable using its name
private Map<String, Integer> varSlotMap = new HashMap<>();
private final String size_label;
@ -304,13 +305,13 @@ public class CodeGenImpl extends CodeGenBase
if (expr.getInferredType().equals(Type.INT_TYPE)) {
if (formalParamInfo.getVarType().equals(Type.OBJECT_TYPE) || formalParamInfo.getVarType().equals(Type.INT_TYPE)) {
backend.emitJ(makeintLabel, "Box integer");
backend.emitJAL(makeintLabel, "Box integer");
} else {
// FIXME: passed argument does not match formal parameter
}
} else if (expr.getInferredType().equals(Type.BOOL_TYPE)) {
if (formalParamInfo.getVarType().equals(Type.OBJECT_TYPE) || formalParamInfo.getVarType().equals(Type.BOOL_TYPE)) {
backend.emitJ(makeboolLabel, "Box boolean");
backend.emitJAL(makeboolLabel, "Box boolean");
} else {
// FIXME: passed argument does not match formal parameter
}

Loading…
Cancel
Save