From: Peizhao Ou Date: Wed, 24 Feb 2016 10:23:56 +0000 (-0800) Subject: edits X-Git-Url: http://plrg.eecs.uci.edu/git/?p=cdsspec-compiler.git;a=commitdiff_plain;h=ab66367c9abeae3f68837ad1f48a11a54e4a55bf edits --- diff --git a/src/edu/uci/eecs/codeGenerator/CodeGeneratorUtils.java b/src/edu/uci/eecs/codeGenerator/CodeGeneratorUtils.java index 69c046a..73176b9 100644 --- a/src/edu/uci/eecs/codeGenerator/CodeGeneratorUtils.java +++ b/src/edu/uci/eecs/codeGenerator/CodeGeneratorUtils.java @@ -581,7 +581,7 @@ public class CodeGeneratorUtils { + SpecNaming.Method1 + ", " + SpecNaming.Method + " " + SpecNaming.Method2 + ") {"); // Initialize value struct fields - fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method2, "value", construct); + fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method2, SpecNaming.InterfaceValueInst, construct); fieldsInit.align(1); code.addLines(fieldsInit); @@ -599,7 +599,7 @@ public class CodeGeneratorUtils { + SpecNaming.Method1 + ") {"); // Initialize value struct fields - fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, "value", construct); + fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, SpecNaming.InterfaceValueInst, construct); fieldsInit.align(1); code.addLines(fieldsInit); @@ -618,7 +618,7 @@ public class CodeGeneratorUtils { + SpecNaming.Method1 + ") {"); // Initialize value struct fields - fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, "value", construct); + fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, SpecNaming.InterfaceValueInst, construct); fieldsInit.align(1); code.addLines(fieldsInit); @@ -636,7 +636,7 @@ public class CodeGeneratorUtils { + SpecNaming.Method1 + ") {"); // Initialize value struct fields - fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, "value", construct); + fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, SpecNaming.InterfaceValueInst, construct); fieldsInit.align(1); code.addLines(fieldsInit); @@ -653,7 +653,7 @@ public class CodeGeneratorUtils { code.addLine("void _" + name + "_" + SpecNaming.PrintValue + "(" + SpecNaming.Method + " " + SpecNaming.Method1 + ") {"); // Initialize value struct fields - fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, "value", construct); + fieldsInit = GenerateInterfaceFieldsInitialization(SpecNaming.Method1, SpecNaming.InterfaceValueInst, construct); fieldsInit.align(1); code.addLines(fieldsInit); @@ -882,11 +882,11 @@ public class CodeGeneratorUtils { String name = construct.getName(); res.addLine(ShortComment("Initialize fields for " + name)); // The very first assignment " - res.addLine(DeclareDefine(name, "*" + inst, "(" + name + "*) " + methodInst + "->value")); + res.addLine(DeclareDefine(name, "*" + inst, "(" + name + "*) " + methodInst + "->" + SpecNaming.MethodValueField)); // Don't leave out the RET field if (!construct.getFunctionHeader().isReturnVoid()) { res.addLine(DeclareDefine(construct.getFunctionHeader().returnType, SpecNaming.RET, - "value->" + SpecNaming.RET)); + inst + "->" + SpecNaming.RET)); } // For arguments for (VariableDeclaration decl : construct.getFunctionHeader().args) { @@ -1020,20 +1020,20 @@ public class CodeGeneratorUtils { // Initialize the value struct code.addLine(prefixTabs + "\t" + ShortComment("Initialize the value struct")); // The very first assignment " - code.addLine(prefixTabs + "\t" + DeclareDefine(name, "*value", SpecNaming.New + Brace(name))); + code.addLine(prefixTabs + "\t" + DeclareDefine(name, "*" + SpecNaming.InterfaceValueInst, SpecNaming.New + Brace(name))); // Don't leave out the RET field if (!construct.getFunctionHeader().isReturnVoid()) - code.addLine(prefixTabs + "\t" + AssignToPtr("value", SpecNaming.RET, SpecNaming.RET)); + code.addLine(prefixTabs + "\t" + AssignToPtr(SpecNaming.InterfaceValueInst, SpecNaming.RET, SpecNaming.RET)); // For arguments for (VariableDeclaration decl : construct.getFunctionHeader().args) - code.addLine(prefixTabs + "\t" + AssignToPtr("value", decl.name, decl.name)); + code.addLine(prefixTabs + "\t" + AssignToPtr(SpecNaming.InterfaceValueInst, decl.name, decl.name)); code.addLine(""); // Store the value info into the current MethodCall // _setInterfaceBeginAnnotationValue(info, value); code.addLine(prefixTabs + "\t" + ShortComment("Store the value info into the current MethodCall")); code.addLine(prefixTabs + "\t" + SpecNaming.SetInterfaceBeginAnnoValueFunc - + Brace(SpecNaming.AnnoInterfaceInfoInst + ", value") + ";"); + + Brace(SpecNaming.AnnoInterfaceInfoInst + ", " + SpecNaming.InterfaceValueInst) + ";"); code.addLine(""); // Return if necessary diff --git a/src/edu/uci/eecs/specExtraction/SpecNaming.java b/src/edu/uci/eecs/specExtraction/SpecNaming.java index d60bf96..463d2c9 100644 --- a/src/edu/uci/eecs/specExtraction/SpecNaming.java +++ b/src/edu/uci/eecs/specExtraction/SpecNaming.java @@ -145,6 +145,7 @@ public class SpecNaming { public static final String StateStruct = "StateStruct"; public static final String Method = "Method"; + public static final String MethodValueField = "value"; public static final String CommutativityRule = "CommutativityRule"; public static final String StateFunctions = "StateFunctions"; public static final String NamedFunction = "NamedFunction"; @@ -178,6 +179,7 @@ public class SpecNaming { public static final String CDSAnnotateFunc = "cdsannotate"; public static final String PRINT = "PRINT"; public static final String PrintContainer = "printContainer"; + public static final String PrintMap = "printMap"; // Special instances public static final String Method1 = "_M"; @@ -187,6 +189,7 @@ public class SpecNaming { public static final String NewStateInst = "NEW"; // Specification types and macros public static final String RET = "RET"; + public static final String InterfaceValueInst = "__value"; // The wrapper prefix that we want to attach to the function name public static final String WrapperPrefix = "Wrapper"; diff --git a/src/edu/uci/eecs/specExtraction/SpecUtils.java b/src/edu/uci/eecs/specExtraction/SpecUtils.java index 71512d8..b8d0479 100644 --- a/src/edu/uci/eecs/specExtraction/SpecUtils.java +++ b/src/edu/uci/eecs/specExtraction/SpecUtils.java @@ -279,7 +279,11 @@ public class SpecUtils { // printContainer(&q); // model_print("\n"); code.addLine(SpecNaming.PRINT + "(\"\\t" + name + ": \");"); - code.addLine(SpecNaming.PrintContainer + "(&" + name + ");"); + if (type.equals("IntMap")) { + code.addLine(SpecNaming.PrintMap + "(&" + name + ");"); + } else { + code.addLine(SpecNaming.PrintContainer + "(&" + name + ");"); + } code.addLine(SpecNaming.PRINT + "(\"\\n\");"); } else if (type.equals("IntList *") || type.equals("IntSet *") || type.equals("IntMap *")) { @@ -288,7 +292,11 @@ public class SpecUtils { // printContainer(q); // model_print("\n"); code.addLine(SpecNaming.PRINT + "(\"\\t" + name + ": \");"); - code.addLine(SpecNaming.PrintContainer + "(" + name + ");"); + if (type.equals("IntMap *")) { + code.addLine(SpecNaming.PrintMap + "(" + name + ");"); + } else { + code.addLine(SpecNaming.PrintContainer + "(" + name + ");"); + } code.addLine(SpecNaming.PRINT + "(\"\\n\");"); } else if (type.equals("void")) { // Just do nothing!