From dfd2e63f823ba223a305917243d2f1bfef8aa316 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Tue, 12 Apr 2016 15:35:41 -0700 Subject: [PATCH 01/15] Update MethodStack.java --- .../gr/gousiosg/javacg/dyn/MethodStack.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 90cc7a0f..5b345b70 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -81,7 +81,8 @@ public int compare(Object o1, Object o2) { sb = new StringBuffer(); } - public static void push(String callname) throws IOException { + public static void push(String callname,Object [] argM) throws IOException {// added the object array in to pass the parameters to the + // funciton in. if (threadid == -1) threadid = Thread.currentThread().getId(); @@ -98,8 +99,16 @@ public static void push(String callname) throws IOException { sb.setLength(0); sb.append(">[").append(stack.size()).append("]"); sb.append("[").append(Thread.currentThread().getId()).append("]"); - sb.append(callname).append("=").append(System.nanoTime()).append("\n"); + sb.append(stack.peek()).append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class + + for(Object ob : argM) + { + sb.append(" ").append(ob.toString()); + } + fw.write(sb.toString()); + + stack.push(callname); } @@ -112,9 +121,9 @@ public static void pop() throws IOException { String returnFrom = stack.pop(); sb.setLength(0); - sb.append("<[").append(stack.size()).append("]"); + sb.append("\n<[").append(stack.size()).append("]"); sb.append("[").append(Thread.currentThread().getId()).append("]"); - sb.append(returnFrom).append("=").append(System.nanoTime()).append("\n"); + sb.append(returnFrom).append("=").append(System.nanoTime()).append("\n\n"); fw.write(sb.toString()); } -} \ No newline at end of file +} From 2075b5d30a730cb77dc00a93b59eb7b42e8deabf Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Tue, 12 Apr 2016 15:48:31 -0700 Subject: [PATCH 02/15] Update Instrumenter.java --- src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java index 3aee29b8..c516d2ec 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java @@ -171,11 +171,11 @@ private void enhanceMethod(CtBehavior method, String className) methodName = ""; method.insertBefore("gr.gousiosg.javacg.dyn.MethodStack.push(\"" + className - + ":" + methodName + "\");"); + + ":" + methodName + "\",$args);");// ADDED: $args which is an object array of the parameters method.insertAfter("gr.gousiosg.javacg.dyn.MethodStack.pop();"); } private static void err(String msg) { //System.err.println("[JAVACG-DYN] " + msg); } -} \ No newline at end of file +} From aacf92d55b9fbff89524ce9313428862ce75c55e Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Tue, 12 Apr 2016 21:14:34 -0700 Subject: [PATCH 03/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 5b345b70..adecacd0 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -99,7 +99,8 @@ public static void push(String callname,Object [] argM) throws IOException {// a sb.setLength(0); sb.append(">[").append(stack.size()).append("]"); sb.append("[").append(Thread.currentThread().getId()).append("]"); - sb.append(stack.peek()).append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class + if (!stack.isEmpty()) { sb.append(stack.peek()); } + sb.append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class for(Object ob : argM) { From 1c4bcd6ee9415ef508920d1e037fd4c5bb6550f8 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Wed, 13 Apr 2016 11:30:50 -0700 Subject: [PATCH 04/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index adecacd0..9ca9ac76 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -104,7 +104,7 @@ public static void push(String callname,Object [] argM) throws IOException {// a for(Object ob : argM) { - sb.append(" ").append(ob.toString()); + sb.append(" ").append(ob.getClass()); // GET THE PARAMETERS AND PRINT THE TYPE. } fw.write(sb.toString()); From db15f74b6614ea5b9505eafe257301e89b972061 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Wed, 13 Apr 2016 11:43:35 -0700 Subject: [PATCH 05/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 9ca9ac76..600f723a 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -102,11 +102,11 @@ public static void push(String callname,Object [] argM) throws IOException {// a if (!stack.isEmpty()) { sb.append(stack.peek()); } sb.append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class - for(Object ob : argM) + /* for(Object ob : argM) { sb.append(" ").append(ob.getClass()); // GET THE PARAMETERS AND PRINT THE TYPE. } - + */ fw.write(sb.toString()); @@ -122,7 +122,7 @@ public static void pop() throws IOException { String returnFrom = stack.pop(); sb.setLength(0); - sb.append("\n<[").append(stack.size()).append("]"); + sb.append("\n\n<[").append(stack.size()).append("]"); sb.append("[").append(Thread.currentThread().getId()).append("]"); sb.append(returnFrom).append("=").append(System.nanoTime()).append("\n\n"); fw.write(sb.toString()); From 4b9f53d51ba696eeda5fe28c5504d32c5dd7078f Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 11:25:35 -0700 Subject: [PATCH 06/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 600f723a..e5289c92 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -81,7 +81,7 @@ public int compare(Object o1, Object o2) { sb = new StringBuffer(); } - public static void push(String callname,Object [] argM) throws IOException {// added the object array in to pass the parameters to the + public static void push(String callname, Object [] argM) throws IOException {// added the object array in to pass the parameters to the // funciton in. if (threadid == -1) threadid = Thread.currentThread().getId(); @@ -102,11 +102,11 @@ public static void push(String callname,Object [] argM) throws IOException {// a if (!stack.isEmpty()) { sb.append(stack.peek()); } sb.append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class - /* for(Object ob : argM) + for(Object ob : argM) { - sb.append(" ").append(ob.getClass()); // GET THE PARAMETERS AND PRINT THE TYPE. + sb.append(" ").append(ob.getClass().getName()); // GET THE PARAMETERS AND PRINT THE TYPE. } - */ + fw.write(sb.toString()); From 0d98d2888758f02cfcbf5126bdc3aa355f903eb0 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 11:26:42 -0700 Subject: [PATCH 07/15] Update Instrumenter.java --- src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java index c516d2ec..dc9517e7 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java @@ -171,7 +171,7 @@ private void enhanceMethod(CtBehavior method, String className) methodName = ""; method.insertBefore("gr.gousiosg.javacg.dyn.MethodStack.push(\"" + className - + ":" + methodName + "\",$args);");// ADDED: $args which is an object array of the parameters + + ":" + methodName + "\",$sig);");// ADDED: $args which is an object array of the parameters method.insertAfter("gr.gousiosg.javacg.dyn.MethodStack.pop();"); } From b64467e6164e3d044632e1d7f0d71245395687c2 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 11:49:06 -0700 Subject: [PATCH 08/15] Update Instrumenter.java --- src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java index dc9517e7..c516d2ec 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java @@ -171,7 +171,7 @@ private void enhanceMethod(CtBehavior method, String className) methodName = ""; method.insertBefore("gr.gousiosg.javacg.dyn.MethodStack.push(\"" + className - + ":" + methodName + "\",$sig);");// ADDED: $args which is an object array of the parameters + + ":" + methodName + "\",$args);");// ADDED: $args which is an object array of the parameters method.insertAfter("gr.gousiosg.javacg.dyn.MethodStack.pop();"); } From 141c7a740f5e20e7a186e030b6146daf7fb74305 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 11:49:56 -0700 Subject: [PATCH 09/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index e5289c92..1087b7be 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -107,6 +107,8 @@ public static void push(String callname, Object [] argM) throws IOException {// sb.append(" ").append(ob.getClass().getName()); // GET THE PARAMETERS AND PRINT THE TYPE. } + sb.append("\n"); + fw.write(sb.toString()); From 6fb5a3b16eab59a53a9d6427b4918f1aceea14df Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 12:02:48 -0700 Subject: [PATCH 10/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 1087b7be..672c62a0 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -102,6 +102,8 @@ public static void push(String callname, Object [] argM) throws IOException {// if (!stack.isEmpty()) { sb.append(stack.peek()); } sb.append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class + sb.append("Formal Param Types: "); + for(Object ob : argM) { sb.append(" ").append(ob.getClass().getName()); // GET THE PARAMETERS AND PRINT THE TYPE. From 92d97dc1bfcebcebc7ea59ced3c96eb514b42323 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 12:35:40 -0700 Subject: [PATCH 11/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 672c62a0..609eaf85 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -81,7 +81,8 @@ public int compare(Object o1, Object o2) { sb = new StringBuffer(); } - public static void push(String callname, Object [] argM) throws IOException {// added the object array in to pass the parameters to the +//Object [] argM + public static void push(String callname) throws IOException {// added the object array in to pass the parameters to the // funciton in. if (threadid == -1) threadid = Thread.currentThread().getId(); @@ -103,14 +104,14 @@ public static void push(String callname, Object [] argM) throws IOException {// sb.append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class sb.append("Formal Param Types: "); - + /* for(Object ob : argM) { sb.append(" ").append(ob.getClass().getName()); // GET THE PARAMETERS AND PRINT THE TYPE. } sb.append("\n"); - + */ fw.write(sb.toString()); From f7e271c70a37c07115d71601e4e93eb14a13beae Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 12:36:07 -0700 Subject: [PATCH 12/15] Update Instrumenter.java --- src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java index c516d2ec..d0b6ec2a 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java @@ -171,7 +171,7 @@ private void enhanceMethod(CtBehavior method, String className) methodName = ""; method.insertBefore("gr.gousiosg.javacg.dyn.MethodStack.push(\"" + className - + ":" + methodName + "\",$args);");// ADDED: $args which is an object array of the parameters + + ":" + methodName + "\");");// ADDED: $args which is an object array of the parameters method.insertAfter("gr.gousiosg.javacg.dyn.MethodStack.pop();"); } From 06e6d7929764b09b9da94f1a789fe99db75b2338 Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 12:45:52 -0700 Subject: [PATCH 13/15] Update MethodStack.java --- src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java index 609eaf85..26ea8a29 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/MethodStack.java @@ -81,8 +81,8 @@ public int compare(Object o1, Object o2) { sb = new StringBuffer(); } -//Object [] argM - public static void push(String callname) throws IOException {// added the object array in to pass the parameters to the + + public static void push(String callname, Object [] argM) throws IOException {// added the object array in to pass the parameters to the // funciton in. if (threadid == -1) threadid = Thread.currentThread().getId(); @@ -101,17 +101,17 @@ public static void push(String callname) throws IOException {// added the object sb.append(">[").append(stack.size()).append("]"); sb.append("[").append(Thread.currentThread().getId()).append("]"); if (!stack.isEmpty()) { sb.append(stack.peek()); } - sb.append(" --- ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class + sb.append(" ---> ").append(callname).append("=").append(System.nanoTime()).append("\n");// added in stack peek so it will also print the calling class sb.append("Formal Param Types: "); - /* + for(Object ob : argM) { sb.append(" ").append(ob.getClass().getName()); // GET THE PARAMETERS AND PRINT THE TYPE. } sb.append("\n"); - */ + fw.write(sb.toString()); From c280f8aabcdede0fec9557e942e17daabb955bde Mon Sep 17 00:00:00 2001 From: jaredm94 Date: Fri, 15 Apr 2016 12:48:09 -0700 Subject: [PATCH 14/15] Update Instrumenter.java --- src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java index d0b6ec2a..c516d2ec 100644 --- a/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java +++ b/src/main/java/gr/gousiosg/javacg/dyn/Instrumenter.java @@ -171,7 +171,7 @@ private void enhanceMethod(CtBehavior method, String className) methodName = ""; method.insertBefore("gr.gousiosg.javacg.dyn.MethodStack.push(\"" + className - + ":" + methodName + "\");");// ADDED: $args which is an object array of the parameters + + ":" + methodName + "\",$args);");// ADDED: $args which is an object array of the parameters method.insertAfter("gr.gousiosg.javacg.dyn.MethodStack.pop();"); } From 00dd569628fb0ca4e23c153fd9b389a72dd41290 Mon Sep 17 00:00:00 2001 From: Sitdhibong Laokok Date: Sun, 22 Apr 2018 11:32:55 +0700 Subject: [PATCH 15/15] Apply pull request from issue #12 from upstream to makes jcg read classes and directory --- .../gr/gousiosg/javacg/stat/JCallGraph.java | 71 ++++++++++++------- .../gousiosg/javacg/stat/MethodVisitor.java | 12 ++-- 2 files changed, 52 insertions(+), 31 deletions(-) diff --git a/src/main/java/gr/gousiosg/javacg/stat/JCallGraph.java b/src/main/java/gr/gousiosg/javacg/stat/JCallGraph.java index 4d19408d..bc3717d0 100644 --- a/src/main/java/gr/gousiosg/javacg/stat/JCallGraph.java +++ b/src/main/java/gr/gousiosg/javacg/stat/JCallGraph.java @@ -37,44 +37,65 @@ import org.apache.bcel.classfile.ClassParser; /** - * Constructs a callgraph out of a JAR archive. Can combine multiple archives - * into a single call graph. + * Constructs a callgraph out of a set of directories, classes and JAR archives. + * Can combine multiple archives into a single call graph. * * @author Georgios Gousios * */ public class JCallGraph { - public static void main(String[] args) { - ClassParser cp; - try { - for (String arg : args) { + public static void processClass(String class_name) throws IOException { + ClassParser cp = new ClassParser(class_name); + ClassVisitor visitor = new ClassVisitor(cp.parse()); + visitor.start(); + } + + public static void processClass(String jar_name, String class_name) throws IOException { + ClassParser cp = new ClassParser(jar_name,class_name); + ClassVisitor visitor = new ClassVisitor(cp.parse()); + visitor.start(); + } + + public static void processJar(JarFile jar) throws IOException { + Enumeration entries = jar.entries(); + while (entries.hasMoreElements()) { + JarEntry entry = entries.nextElement(); + if (entry.isDirectory()) + continue; - File f = new File(arg); - - if (!f.exists()) { - System.err.println("Jar file " + arg + " does not exist"); - } - - JarFile jar = new JarFile(f); + if (!entry.getName().endsWith(".class")) + continue; - Enumeration entries = jar.entries(); - while (entries.hasMoreElements()) { - JarEntry entry = entries.nextElement(); - if (entry.isDirectory()) - continue; + processClass(jar.getName(),entry.getName()); + } + } - if (!entry.getName().endsWith(".class")) - continue; + public static void processFile(File file) { + try { + if (!file.exists()) + System.err.println("File " + file.getName() + " does not exist"); - cp = new ClassParser(arg,entry.getName()); - ClassVisitor visitor = new ClassVisitor(cp.parse()); - visitor.start(); - } + else if (file.isDirectory()) { + for (File dfile : file.listFiles()) + processFile(dfile); } + + else if (file.getName().endsWith(".jar")) + processJar(new JarFile(file)); + + else if (file.getName().endsWith(".class")) + processClass(file.getAbsolutePath()); + } catch (IOException e) { - System.err.println("Error while processing jar: " + e.getMessage()); + System.err.println("Error while processing file: " + e.getMessage()); e.printStackTrace(); } } + + public static void main(String[] args) { + for (String arg : args) { + processFile(new File(arg)); + } + } } diff --git a/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java b/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java index 4dd0821b..f8d2e9e6 100644 --- a/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java +++ b/src/main/java/gr/gousiosg/javacg/stat/MethodVisitor.java @@ -48,7 +48,7 @@ public MethodVisitor(MethodGen m, JavaClass jc) { visitedClass = jc; mg = m; cp = mg.getConstantPool(); - format = "M:" + visitedClass.getClassName() + ":" + mg.getName() + "(" + argumentList(mg.getArgumentTypes()) + ")" + format = "M:" + visitedClass.getClassName() + ":" + mg.getName() + "(" + argumentList(mg.getArgumentTypes()) + "):%d" + " " + "(%s)%s:%s(%s)"; } @@ -84,27 +84,27 @@ private boolean visitInstruction(Instruction i) { @Override public void visitINVOKEVIRTUAL(INVOKEVIRTUAL i) { - System.out.println(String.format(format,"M",i.getReferenceType(cp),i.getMethodName(cp),argumentList(i.getArgumentTypes(cp)))); + System.out.println(String.format(format,i.getIndex(),"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),argumentList(i.getArgumentTypes(cp)))); + System.out.println(String.format(format,i.getIndex(),"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),argumentList(i.getArgumentTypes(cp)))); + System.out.println(String.format(format,i.getIndex(),"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),argumentList(i.getArgumentTypes(cp)))); + System.out.println(String.format(format,i.getIndex(),"S",i.getReferenceType(cp),i.getMethodName(cp),argumentList(i.getArgumentTypes(cp)))); } @Override public void visitINVOKEDYNAMIC(INVOKEDYNAMIC i) { - System.out.println(String.format(format,"D",i.getType(cp),i.getMethodName(cp), + System.out.println(String.format(format,i.getIndex(),"D",i.getType(cp),i.getMethodName(cp), argumentList(i.getArgumentTypes(cp)))); } }