+ FlatMethod fm = fsen.getEnclosingFlatMeth();
+ MethodDescriptor md = fm.getMethod();
+ ClassDescriptor cn = md.getClassDesc();
+
+
+ //Creates bogus method descriptor to index into tables
+ Modifiers bogusmod=new Modifiers();
+ MethodDescriptor bogusmd=new MethodDescriptor(bogusmod, new TypeDescriptor(TypeDescriptor.VOID), fsen.getIdentifier());
+ FlatMethod bogusfm=new FlatMethod(bogusmd, null);
+
+ //Build paramsobj for bogus method descriptor
+ ParamsObject objectparams=new ParamsObject(bogusmd, tag++);
+ paramstable.put(bogusmd, objectparams);
+
+ for(int i=0; i<fsen.numParameters(); i++) {
+ TempDescriptor temp=fsen.getParameter(i);
+ TypeDescriptor type=temp.getType();
+ if (type.isPtr()&&GENERATEPRECISEGC)
+ objectparams.addPtr(temp);
+ else
+ objectparams.addPrim(temp);
+ }
+
+ //Build normal temp object for bogus method descriptor
+
+ TempObject objecttemps=new TempObject(objectparams,bogusmd,tag++);
+ tempstable.put(bogusmd, objecttemps);
+
+ for(Iterator nodeit=fsen.getNodeSet().iterator(); nodeit.hasNext();) {
+ FlatNode fn=(FlatNode)nodeit.next();
+ TempDescriptor[] writes=fn.writesTemps();
+ for(int i=0; i<writes.length; i++) {
+ TempDescriptor temp=writes[i];
+ TypeDescriptor type=temp.getType();
+ if (type.isPtr()&&GENERATEPRECISEGC)
+ objecttemps.addPtr(temp);
+ else
+ objecttemps.addPrim(temp);
+ }
+ }
+
+ //Generate code for parameters structure
+
+ generateMethodParam(cn, bogusmd, null, outputStructs);
+
+ //Generate code for locals structure
+ outputStructs.println("struct "+cn.getSafeSymbol()+bogusmd.getSafeSymbol()+"_"+bogusmd.getSafeMethodDescriptor()+"_locals {");
+ outputStructs.println(" INTPTR size;");
+ outputStructs.println(" void * next;");
+ for(int i=0; i<objecttemps.numPointers(); i++) {
+ TempDescriptor temp=objecttemps.getPointer(i);
+ if (temp.getType().isNull())
+ outputStructs.println(" void * "+temp.getSafeSymbol()+";");
+ else
+ outputStructs.println(" struct "+temp.getType().getSafeSymbol()+" * "+temp.getSafeSymbol()+";");
+ }
+ outputStructs.println("};\n");
+
+ //Ready to build code at this point