From 2c9079e0f955a099940f17229652cbd6604842af Mon Sep 17 00:00:00 2001 From: bdemsky Date: Thu, 16 Aug 2007 07:59:01 +0000 Subject: [PATCH] more DSTM interface work --- Robust/src/IR/Flat/BuildCode.java | 4 +++ Robust/src/IR/MethodDescriptor.java | 5 ++++ Robust/src/IR/Tree/SemanticCheck.java | 41 +++++++++++++++++++++------ 3 files changed, 42 insertions(+), 8 deletions(-) diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index bd24b2f0..ee496ad9 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -816,6 +816,8 @@ public class BuildCode { while(allit.hasNext()) { FieldDescriptor fd=(FieldDescriptor)allit.next(); TypeDescriptor type=fd.getType(); + if (state.DSM&&fd.isGlobal()) //Don't GC the global objects for now + continue; if (type.isPtr()||type.isArray()) count++; } @@ -824,6 +826,8 @@ public class BuildCode { while(allit.hasNext()) { FieldDescriptor fd=(FieldDescriptor)allit.next(); TypeDescriptor type=fd.getType(); + if (state.DSM&&fd.isGlobal()) //Don't GC the global objects for now + continue; if (type.isPtr()||type.isArray()) { output.println(","); output.print("((unsigned int)&(((struct "+cn.getSafeSymbol() +" *)0)->"+fd.getSafeSymbol()+"))"); diff --git a/Robust/src/IR/MethodDescriptor.java b/Robust/src/IR/MethodDescriptor.java index 79056252..1f781f3f 100644 --- a/Robust/src/IR/MethodDescriptor.java +++ b/Robust/src/IR/MethodDescriptor.java @@ -70,6 +70,11 @@ public class MethodDescriptor extends Descriptor { thisvd=null; } + + public boolean isGlobal() { + return isglobal; + } + public void setThis(VarDescriptor vd) { thisvd=vd; paramtable.add(vd); diff --git a/Robust/src/IR/Tree/SemanticCheck.java b/Robust/src/IR/Tree/SemanticCheck.java index af01c886..12e5223c 100644 --- a/Robust/src/IR/Tree/SemanticCheck.java +++ b/Robust/src/IR/Tree/SemanticCheck.java @@ -543,8 +543,6 @@ public class SemanticCheck { if (td!=null&&!typeutil.isSuperorType(td, typetolookin)) throw new Error(typetolookin + " isn't a "+td); - - /* Check flag effects */ if (con.getFlagEffects()!=null) { FlagEffects fe=con.getFlagEffects(); @@ -574,37 +572,43 @@ public class SemanticCheck { } } - if ((!typetolookin.isClass())&&(!typetolookin.isArray())) throw new Error("Can't allocate primitive type:"+con.printNode(0)); if (!typetolookin.isArray()) { //Array's don't need constructor calls ClassDescriptor classtolookin=typetolookin.getClassDesc(); - //System.out.println("Looking for "+typetolookin.getSymbol()); - //System.out.println(classtolookin.getMethodTable()); - + Set methoddescriptorset=classtolookin.getMethodTable().getSet(typetolookin.getSymbol()); MethodDescriptor bestmd=null; NextMethod: for(Iterator methodit=methoddescriptorset.iterator();methodit.hasNext();) { MethodDescriptor currmd=(MethodDescriptor)methodit.next(); /* Need correct number of parameters */ - //System.out.println("Examining: "+currmd); if (con.numArgs()!=currmd.numParameters()) continue; for(int i=0;i