From 398563d8ba229fb4eaed23cd7033de2adc900adf Mon Sep 17 00:00:00 2001 From: Sanjar Ahmadov Date: Sun, 2 May 2021 12:46:35 -0400 Subject: [PATCH] fixed issue in boxing --- src/main/java/chocopy/pa3/CodeGenImpl.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/chocopy/pa3/CodeGenImpl.java b/src/main/java/chocopy/pa3/CodeGenImpl.java index 42cc067..eac3a3b 100644 --- a/src/main/java/chocopy/pa3/CodeGenImpl.java +++ b/src/main/java/chocopy/pa3/CodeGenImpl.java @@ -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 varSlotMap = stmtAnalyzer.varSlotMap; for (int i = 0; i < funcInfo.getParams().size(); i++) { @@ -214,6 +214,7 @@ public class CodeGenImpl extends CodeGenBase private Map 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 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 }