diff --git a/src/main/java/gr/gousiosg/javacg/stat/ClassVisitor.java b/src/main/java/gr/gousiosg/javacg/stat/ClassVisitor.java
index 36f35f1..97c1cc2 100644
--- a/src/main/java/gr/gousiosg/javacg/stat/ClassVisitor.java
+++ b/src/main/java/gr/gousiosg/javacg/stat/ClassVisitor.java
@@ -72,13 +72,13 @@ public class ClassVisitor extends EmptyVisitor {
}
}
}
-
+
public void visitMethod(Method method) {
MethodGen mg = new MethodGen(method, clazz.getClassName(), constants);
MethodVisitor visitor = new MethodVisitor(mg, clazz);
visitor.start();
}
-
+
public void start() {
visitJavaClass(clazz);
}
diff --git a/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java b/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java
index 8fc7619..9f233cc 100644
--- a/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java
+++ b/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java
@@ -32,10 +32,13 @@ 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.InvokeInstruction;
import org.apache.bcel.generic.MethodGen;
import org.apache.bcel.generic.ReturnInstruction;
@@ -57,7 +60,7 @@ public class MethodVisitor extends EmptyVisitor {
mg = m;
cp = mg.getConstantPool();
format = "M:" + visitedClass.getClassName() + ":" + mg.getName()
- + " " + "%s:%s";
+ + " " + "(%s)%s:%s";
}
public void start() {
@@ -80,8 +83,23 @@ public class MethodVisitor extends EmptyVisitor {
&& !(i instanceof ReturnInstruction));
}
- /** Method invocation. */
- public void visitInvokeInstruction(InvokeInstruction i) {
- System.out.println(String.format(format,i.getReferenceType(cp),i.getMethodName(cp)));
+ @Override
+ public void visitINVOKEVIRTUAL(INVOKEVIRTUAL i) {
+ System.out.println(String.format(format,"M",i.getReferenceType(cp),i.getMethodName(cp)));
+ }
+
+ @Override
+ public void visitINVOKEINTERFACE(INVOKEINTERFACE i) {
+ System.out.println(String.format(format,"I",i.getReferenceType(cp),i.getMethodName(cp)));
+ }
+
+ @Override
+ public void visitINVOKESPECIAL(INVOKESPECIAL i) {
+ System.out.println(String.format(format,"O",i.getReferenceType(cp),i.getMethodName(cp)));
+ }
+
+ @Override
+ public void visitINVOKESTATIC(INVOKESTATIC i) {
+ System.out.println(String.format(format,"S",i.getReferenceType(cp),i.getMethodName(cp)));
}
}