diff --git a/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java b/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java
index 9f233cc..beb4d81 100644
--- a/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java
+++ b/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java
@@ -29,18 +29,7 @@
package gr.gousiosg.javacg.stat;
import org.apache.bcel.classfile.JavaClass;
-import org.apache.bcel.generic.ConstantPoolGen;
-import org.apache.bcel.generic.ConstantPushInstruction;
-import org.apache.bcel.generic.EmptyVisitor;
-import org.apache.bcel.generic.INVOKEINTERFACE;
-import org.apache.bcel.generic.INVOKESPECIAL;
-import org.apache.bcel.generic.INVOKESTATIC;
-import org.apache.bcel.generic.INVOKEVIRTUAL;
-import org.apache.bcel.generic.Instruction;
-import org.apache.bcel.generic.InstructionConstants;
-import org.apache.bcel.generic.InstructionHandle;
-import org.apache.bcel.generic.MethodGen;
-import org.apache.bcel.generic.ReturnInstruction;
+import org.apache.bcel.generic.*;
/**
* The simplest of method visitors, prints any invoked method
@@ -59,8 +48,19 @@ public class MethodVisitor extends EmptyVisitor {
visitedClass = jc;
mg = m;
cp = mg.getConstantPool();
- format = "M:" + visitedClass.getClassName() + ":" + mg.getName()
- + " " + "(%s)%s:%s";
+ format = "M:" + visitedClass.getClassName() + ":" + mg.getName() + "(" + argumentList(mg.getArgumentTypes()) + ")"
+ + " " + "(%s)%s:%s(%s)";
+ }
+
+ private String argumentList(Type[] arguments) {
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0; i < arguments.length; i++) {
+ if (i != 0) {
+ sb.append(",");
+ }
+ sb.append(arguments[i].toString());
+ }
+ return sb.toString();
}
public void start() {
@@ -85,21 +85,21 @@ public class MethodVisitor extends EmptyVisitor {
@Override
public void visitINVOKEVIRTUAL(INVOKEVIRTUAL i) {
- System.out.println(String.format(format,"M",i.getReferenceType(cp),i.getMethodName(cp)));
+ System.out.println(String.format(format,"M",i.getReferenceType(cp),i.getMethodName(cp),argumentList(i.getArgumentTypes(cp))));
}
@Override
public void visitINVOKEINTERFACE(INVOKEINTERFACE i) {
- System.out.println(String.format(format,"I",i.getReferenceType(cp),i.getMethodName(cp)));
+ System.out.println(String.format(format,"I",i.getReferenceType(cp),i.getMethodName(cp),argumentList(i.getArgumentTypes(cp))));
}
@Override
public void visitINVOKESPECIAL(INVOKESPECIAL i) {
- System.out.println(String.format(format,"O",i.getReferenceType(cp),i.getMethodName(cp)));
+ System.out.println(String.format(format,"O",i.getReferenceType(cp),i.getMethodName(cp),argumentList(i.getArgumentTypes(cp))));
}
@Override
public void visitINVOKESTATIC(INVOKESTATIC i) {
- System.out.println(String.format(format,"S",i.getReferenceType(cp),i.getMethodName(cp)));
+ System.out.println(String.format(format,"S",i.getReferenceType(cp),i.getMethodName(cp),argumentList(i.getArgumentTypes(cp))));
}
}