From: bdemsky Date: Thu, 19 Jul 2007 00:06:13 +0000 (+0000) Subject: changes X-Git-Tag: preEdgeChange~518 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ebc35d5dd596636b70848ff97ed061058ddddd75;p=IRC.git changes --- diff --git a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java index 6da94379..c5b626a9 100644 --- a/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java +++ b/Robust/src/Analysis/TaskStateAnalysis/TaskAnalysis.java @@ -131,8 +131,6 @@ public class TaskAnalysis { analyseTasks(trigger); } - - /** Creating DOT files */ Enumeration e=flagstates.keys(); diff --git a/Robust/src/IR/Flat/BuildCode.java b/Robust/src/IR/Flat/BuildCode.java index 34e22096..1aa4a1e3 100644 --- a/Robust/src/IR/Flat/BuildCode.java +++ b/Robust/src/IR/Flat/BuildCode.java @@ -293,31 +293,18 @@ public class BuildCode { outmethod.println(" }"); - ClassDescriptor cd=typeutil.getClass(state.main); - Set mainset=cd.getMethodTable().getSet("main"); - for(Iterator mainit=mainset.iterator();mainit.hasNext();) { - MethodDescriptor md=(MethodDescriptor)mainit.next(); - if (md.numParameters()!=1) - continue; - Descriptor pd=md.getParameter(0); - TypeDescriptor tpd=(pd instanceof TagVarDescriptor)?((TagVarDescriptor)pd).getType():((VarDescriptor)pd).getType(); - if (tpd.getArrayCount()!=1) - continue; - if (!tpd.getSymbol().equals("String")) - continue; - - if (!md.getModifiers().isStatic()) - throw new Error("Error: Non static main"); - outmethod.println(" {"); - if (GENERATEPRECISEGC) { - outmethod.print(" struct "+cd.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()+"_params __parameterlist__={"); - outmethod.println("1, NULL,"+"stringarray};"); - outmethod.println(" "+cd.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()+"(& __parameterlist__);"); - } else - outmethod.println(" "+cd.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()+"(stringarray);"); - outmethod.println(" }"); - break; - } + MethodDescriptor md=typeutil.getMain(); + ClassDescriptor cd=typeutil.getMainClass(); + + outmethod.println(" {"); + if (GENERATEPRECISEGC) { + outmethod.print(" struct "+cd.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()+"_params __parameterlist__={"); + outmethod.println("1, NULL,"+"stringarray};"); + outmethod.println(" "+cd.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()+"(& __parameterlist__);"); + } else + outmethod.println(" "+cd.getSafeSymbol()+md.getSafeSymbol()+"_"+md.getSafeMethodDescriptor()+"(stringarray);"); + outmethod.println(" }"); + if (state.THREAD) { outmethod.println("pthread_mutex_lock(&gclistlock);"); outmethod.println("threadcount--;"); diff --git a/Robust/src/IR/TypeUtil.java b/Robust/src/IR/TypeUtil.java index 044a2316..981a098d 100644 --- a/Robust/src/IR/TypeUtil.java +++ b/Robust/src/IR/TypeUtil.java @@ -34,6 +34,32 @@ public class TypeUtil { } } + public ClassDescriptor getMainClass() { + return getClass(state.main); + } + + public MethodDescriptor getMain() { + ClassDescriptor cd=getMainClass(); + Set mainset=cd.getMethodTable().getSet("main"); + for(Iterator mainit=mainset.iterator();mainit.hasNext();) { + MethodDescriptor md=(MethodDescriptor)mainit.next(); + if (md.numParameters()!=1) + continue; + Descriptor pd=md.getParameter(0); + TypeDescriptor tpd=(pd instanceof TagVarDescriptor)?((TagVarDescriptor)pd).getType():((VarDescriptor)pd) + .getType(); + if (tpd.getArrayCount()!=1) + continue; + if (!tpd.getSymbol().equals("String")) + continue; + + if (!md.getModifiers().isStatic()) + throw new Error("Error: Non static main"); + return md; + } + throw new Error(cd+" has no main"); + } + public void createFullTable() { subclasstable=new Hashtable();