From 3b16dfab9b7b6606bf87cbc5a3e77261bd545dd7 Mon Sep 17 00:00:00 2001 From: bdemsky Date: Mon, 3 Apr 2006 16:57:38 +0000 Subject: [PATCH] Bug fixes and switches --- Robust/src/IR/Flat/BuildCode.java | 34 +++++++++++---- Robust/src/IR/Flat/BuildFlat.java | 51 +++++++++++++++++++++- Robust/src/IR/Tree/SemanticCheck.java | 9 ++++ Robust/src/IR/TypeDescriptor.java | 2 +- Robust/src/Main/Main.java | 61 ++++++++++++++++----------- 5 files changed, 122 insertions(+), 35 deletions(-) diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index c778b1d6..4302ab6b 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -11,7 +11,8 @@ public class BuildCode { int tag=0; String localsprefix="___locals___"; String paramsprefix="___params___"; - private static final boolean GENERATEPRECISEGC=true; + public static boolean GENERATEPRECISEGC=false; + public static String PREFIX=""; public BuildCode(State st, Hashtable temptovar) { state=st; @@ -27,13 +28,13 @@ public class BuildCode { PrintWriter outmethodheader=null; PrintWriter outmethod=null; try { - OutputStream str=new FileOutputStream("structdefs.h"); + OutputStream str=new FileOutputStream(PREFIX+"structdefs.h"); outstructs=new java.io.PrintWriter(str, true); - str=new FileOutputStream("methodheaders.h"); + str=new FileOutputStream(PREFIX+"methodheaders.h"); outmethodheader=new java.io.PrintWriter(str, true); - str=new FileOutputStream("classdefs.h"); + str=new FileOutputStream(PREFIX+"classdefs.h"); outclassdefs=new java.io.PrintWriter(str, true); - str=new FileOutputStream("methods.c"); + str=new FileOutputStream(PREFIX+"methods.c"); outmethod=new java.io.PrintWriter(str, true); } catch (Exception e) { e.printStackTrace(); @@ -60,6 +61,7 @@ public class BuildCode { /* Build the actual methods */ outmethod.println("#include \"methodheaders.h\""); + outmethod.println("#include "); Iterator classit=state.getClassSymbolTable().getDescriptorsIterator(); while(classit.hasNext()) { ClassDescriptor cn=(ClassDescriptor)classit.next(); @@ -176,7 +178,10 @@ public class BuildCode { if (printcomma) headersout.print(", "); printcomma=true; - headersout.print(temp.getType().getSafeSymbol()+" "+temp.getSafeSymbol()); + if (temp.getType().isClass()) + headersout.print("struct " + temp.getType().getSafeSymbol()+" * "+temp.getSafeSymbol()); + else + headersout.print(temp.getType().getSafeSymbol()+" "+temp.getSafeSymbol()); } headersout.println(");\n"); } @@ -184,7 +189,7 @@ public class BuildCode { private void generateFlatMethod(FlatMethod fm, PrintWriter output) { MethodDescriptor md=fm.getMethod(); - ClassDescriptor cn=md.getClassDesc(); + ClassDescriptor cn=md.getClassDesc(); ParamsObject objectparams=(ParamsObject)paramstable.get(md); generateHeader(md,output); @@ -198,7 +203,10 @@ public class BuildCode { for(int i=0;i