From b2c8ffa515ddcafb57e4e89a8b0c37f9dcac03d0 Mon Sep 17 00:00:00 2001
From: Peizhao Ou <peizhaoo@uci.edu>
Date: Wed, 6 Nov 2013 18:21:24 -0800
Subject: [PATCH] small change

---
 .../codeGenerator/CodeVariables.java          | 102 ++++++++++--------
 1 file changed, 55 insertions(+), 47 deletions(-)

diff --git a/src/edu/uci/eecs/specCompiler/codeGenerator/CodeVariables.java b/src/edu/uci/eecs/specCompiler/codeGenerator/CodeVariables.java
index af2ebca..c9f6dde 100644
--- a/src/edu/uci/eecs/specCompiler/codeGenerator/CodeVariables.java
+++ b/src/edu/uci/eecs/specCompiler/codeGenerator/CodeVariables.java
@@ -133,7 +133,15 @@ public class CodeVariables {
 			String val) {
 		return structName + "->" + field + " = " + val + ";";
 	}
+	
+	private static String ASSIGN_PTR_TO_PTR(String structName, String field, String val) {
+		return structName + "->" + field + " = &" + val + ";";
+	}
 
+	private static String STRUCT_NEW_DECLARE_DEFINE(String type, String name) {
+		return "struct " + type + " *" + name + " = (struct " + type + "*) malloc(sizeof(struct " + type + "));";
+	}
+	
 	private static String DECLARE(String type, String name) {
 		return type + " " + name + ";";
 	}
@@ -148,7 +156,7 @@ public class CodeVariables {
 	}
 
 	private static String ANNOTATE(String structName) {
-		return CDSAnnotate + "(" + CDSAnnotateType + ", &" + structName + ");";
+		return CDSAnnotate + "(" + CDSAnnotateType + ", " + structName + ");";
 	}
 
 	private static ArrayList<String> DEFINE_INFO_STRUCT(String interfaceName,
@@ -369,12 +377,12 @@ public class CodeVariables {
 		// Pass function table info
 		newCode.add(COMMENT("Pass function table info"));
 		String structName = "anno_func_table_init", anno = "func_init";
-		newCode.add(DECLARE(ANNO_FUNC_TABLE_INIT, structName));
-		newCode.add(ASSIGN(structName, "size", "INTERFACE_SIZE"));
-		newCode.add(ASSIGN(structName, "table", "func_ptr_table"));
-		newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-		newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_FUNC_TABLE_INIT));
-		newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_FUNC_TABLE_INIT, structName));
+		newCode.add(ASSIGN_TO_PTR(structName, "size", "INTERFACE_SIZE"));
+		newCode.add(ASSIGN_TO_PTR(structName, "table", "func_ptr_table"));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+		newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_FUNC_TABLE_INIT));
+		newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 		newCode.add(ANNOTATE(anno));
 
 		// Pass Happens-before relationship
@@ -439,20 +447,20 @@ public class CodeVariables {
 								.get(right.hbConditionLabel));
 				newCode.add(COMMENT(left + " -> " + right));
 
-				newCode.add(ANNO_HB_INIT + " " + structVarName + ";");
-				newCode.add(ASSIGN(structVarName, "interface_num_before",
+				newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_HB_INIT, structVarName));
+				newCode.add(ASSIGN_TO_PTR(structVarName, "interface_num_before",
 						interfaceNumBefore));
-				newCode.add(ASSIGN(structVarName, "hb_condition_num_before",
+				newCode.add(ASSIGN_TO_PTR(structVarName, "hb_condition_num_before",
 						hbLabelNumBefore));
-				newCode.add(ASSIGN(structVarName, "interface_num_after",
+				newCode.add(ASSIGN_TO_PTR(structVarName, "interface_num_after",
 						interfaceNumAfter));
-				newCode.add(ASSIGN(structVarName, "hb_condition_num_after",
+				newCode.add(ASSIGN_TO_PTR(structVarName, "hb_condition_num_after",
 						hbLabelNumAfter));
 
-				newCode.add(DECLARE(SPEC_ANNOTATION, annotationVarName));
-				newCode.add(ASSIGN(annotationVarName,
+				newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, annotationVarName));
+				newCode.add(ASSIGN_TO_PTR(annotationVarName,
 						SPEC_ANNOTATION_FIELD_TYPE, SPEC_ANNO_TYPE_HB_INIT));
-				newCode.add(ASSIGN_PTR(annotationVarName,
+				newCode.add(ASSIGN_TO_PTR(annotationVarName,
 						SPEC_ANNOTATION_FIELD_ANNO, structVarName));
 				newCode.add(ANNOTATE(annotationVarName));
 			}
@@ -502,12 +510,12 @@ public class CodeVariables {
 		newCode.add(COMMENT("Interface begins"));
 		// Interface begin
 		String structName = "interface_begin";
-		newCode.add(DECLARE(ANNO_INTERFACE_BEGIN, "interface_begin"));
-		newCode.add(ASSIGN(structName, "interface_num", interfaceNum));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_INTERFACE_BEGIN, "interface_begin"));
+		newCode.add(ASSIGN_TO_PTR(structName, "interface_num", interfaceNum));
 		String anno = "annotation_interface_begin";
-		newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-		newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_INTERFACE_BEGIN));
-		newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+		newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_INTERFACE_BEGIN));
+		newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 		newCode.add(ANNOTATE(anno));
 		// Call original renamed function
 		if (header.returnType.equals("void")) {
@@ -523,14 +531,14 @@ public class CodeVariables {
 					.get(label));
 			newCode.add("if " + BRACE(condition) + " {");
 			structName = "hb_condition";
-			newCode.add(DECLARE(ANNO_HB_CONDITION, structName));
-			newCode.add(ASSIGN(structName, "interface_num", interfaceNum));
+			newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_HB_CONDITION, structName));
+			newCode.add(ASSIGN_TO_PTR(structName, "interface_num", interfaceNum));
 
-			newCode.add(ASSIGN(structName, "hb_condition_num", hbCondNum));
+			newCode.add(ASSIGN_TO_PTR(structName, "hb_condition_num", hbCondNum));
 			anno = "annotation_hb_condition";
-			newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-			newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_HB_CONDITION));
-			newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+			newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+			newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_HB_CONDITION));
+			newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 			newCode.add(ANNOTATE(anno));
 			newCode.add("}");
 			newCode.add("");
@@ -555,12 +563,12 @@ public class CodeVariables {
 		}
 		structName = "interface_end";
 		anno = "annoation_interface_end";
-		newCode.add(DECLARE(ANNO_INTERFACE_END, structName));
-		newCode.add(ASSIGN(structName, "interface_num", interfaceNum));
-		newCode.add(ASSIGN(structName, "info", infoName));
-		newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-		newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_INTERFACE_END));
-		newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_INTERFACE_END, structName));
+		newCode.add(ASSIGN_TO_PTR(structName, "interface_num", interfaceNum));
+		newCode.add(ASSIGN_TO_PTR(structName, "info", infoName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+		newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_INTERFACE_END));
+		newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 		newCode.add(ANNOTATE(anno));
 		// Return __RET__ if it's not void
 		if (!header.returnType.equals("void")) {
@@ -614,13 +622,13 @@ public class CodeVariables {
 		// Add annotation
 		newCode.add("if (" + construct.condition + ") {");
 		String structName = "potential_cp_define", anno = "annotation_potential_cp_define";
-		newCode.add(DECLARE(ANNO_POTENTIAL_CP_DEFINE, structName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_POTENTIAL_CP_DEFINE, structName));
 		String labelNum = Integer.toString(semantics.commitPointLabel2Num
 				.get(construct.label));
-		newCode.add(ASSIGN(structName, "label_num", labelNum));
-		newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-		newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_POTENTIAL_CP_DEFINE));
-		newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+		newCode.add(ASSIGN_TO_PTR(structName, "label_num", labelNum));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+		newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_POTENTIAL_CP_DEFINE));
+		newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 		newCode.add(ANNOTATE(anno));
 		newCode.add("}");
 		return newCode;
@@ -643,13 +651,13 @@ public class CodeVariables {
 		// Add annotation
 		newCode.add("if (" + construct.condition + ") {");
 		String structName = "cp_define_check", anno = "annotation_cp_define_check";
-		newCode.add(DECLARE(ANNO_CP_DEFINE_CHECK, structName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_CP_DEFINE_CHECK, structName));
 		String labelNum = Integer.toString(semantics.commitPointLabel2Num
 				.get(construct.label));
-		newCode.add(ASSIGN(structName, "label_num", labelNum));
-		newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-		newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_CP_DEFINE_CHECK));
-		newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+		newCode.add(ASSIGN_TO_PTR(structName, "label_num", labelNum));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+		newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_CP_DEFINE_CHECK));
+		newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 		newCode.add(ANNOTATE(anno));
 		newCode.add("}");
 		return newCode;
@@ -665,13 +673,13 @@ public class CodeVariables {
 		// Add annotation
 		newCode.add("if (" + construct.condition + ") {");
 		String structName = "cp_define", anno = "annotation_cp_define";
-		newCode.add(DECLARE(ANNO_CP_DEFINE, structName));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(ANNO_CP_DEFINE, structName));
 		String labelNum = Integer.toString(semantics.commitPointLabel2Num
 				.get(construct.label));
-		newCode.add(ASSIGN(structName, "label_num", labelNum));
-		newCode.add(DECLARE(SPEC_ANNOTATION, anno));
-		newCode.add(ASSIGN(anno, "type", SPEC_ANNO_TYPE_CP_DEFINE));
-		newCode.add(ASSIGN_PTR(anno, "annotation", structName));
+		newCode.add(ASSIGN_TO_PTR(structName, "label_num", labelNum));
+		newCode.add(STRUCT_NEW_DECLARE_DEFINE(SPEC_ANNOTATION, anno));
+		newCode.add(ASSIGN_TO_PTR(anno, "type", SPEC_ANNO_TYPE_CP_DEFINE));
+		newCode.add(ASSIGN_TO_PTR(anno, "annotation", structName));
 		newCode.add(ANNOTATE(anno));
 		newCode.add("}");
 		return newCode;
-- 
2.34.1