X-Git-Url: http://git.megacz.com/?p=org.ibex.classgen.git;a=blobdiff_plain;f=src%2Forg%2Fibex%2Fclassgen%2FMethodGen.java;h=96193daf9f3006382fbd2769c970ab143ad1d5cb;hp=e534c6533e8c73e1c110a6e93df3817d76260f95;hb=0f4dbf22cb4e40d2f9cdedfb40b6e31647781b75;hpb=6d02ca13f481e213ee0ae26f7acdd40b20dfc6af diff --git a/src/org/ibex/classgen/MethodGen.java b/src/org/ibex/classgen/MethodGen.java index e534c65..96193da 100644 --- a/src/org/ibex/classgen/MethodGen.java +++ b/src/org/ibex/classgen/MethodGen.java @@ -10,10 +10,7 @@ public class MethodGen implements CGConst { private static final int NO_CODE = -1; - private final ClassFile cf; - private final String name; - private final Type ret; - private final Type[] args; + private final Type.Class.Method method; private final int flags; private final ClassFile.AttrGen attrs; private final ClassFile.AttrGen codeAttrs; @@ -78,24 +75,13 @@ public class MethodGen implements CGConst { }; sb.append(" ").append(ClassFile.flagsToString(flags,false)); - - if (name.equals("")) sb.append("static "); - else { - if (name.equals("")) - sb.append(constructorName); - else - sb.append(ret.debugToString()).append(" ").append(name); - sb.append("("); - for(int i=0; i 0) { - sb.append("throws"); - for(Enumeration e = thrownExceptions.keys();e.hasMoreElements();) - sb.append(" ").append(((Type.Class)e.nextElement()).debugToString()).append(","); - sb.setLength(sb.length()-1); - sb.append(" "); - } + sb.append(method.debugToString()); + if(thrownExceptions.size() > 0) { + sb.append("throws"); + for(Enumeration e = thrownExceptions.keys();e.hasMoreElements();) + sb.append(" ").append(((Type.Class)e.nextElement()).debugToString()).append(","); + sb.setLength(sb.length()-1); + sb.append(" "); } if((flags & (NATIVE|ABSTRACT))==0) { sb.append("{\n"); @@ -118,17 +104,11 @@ public class MethodGen implements CGConst { } } - MethodGen(ClassFile cf, DataInput in, ConstantPool cp, boolean ownerInterface) throws IOException { - this.cf = cf; - flags = in.readShort(); - if((flags & ~(PUBLIC|PRIVATE|PROTECTED|STATIC|FINAL|SYNCHRONIZED|NATIVE|ABSTRACT|STRICT)) != 0) - throw new ClassFile.ClassReadExn("invalid flags"); - this.name = cp.getUtf8KeyByIndex(in.readShort()); - //System.err.println("Processing " + name + "..."); - Type.Class.Method m = cf.getType().method(name+cp.getUtf8KeyByIndex(in.readShort())); - this.ret = m.returnType; - this.args = new Type[m.getNumArgs()]; - for(int i=0; i