123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package javassist.bytecode;
-
- import java.util.zip.*;
- import java.util.Enumeration;
- import java.util.List;
- import java.io.*;
-
- @SuppressWarnings({"rawtypes","resource"})
- public class CodeAnalyzerTest {
- public static void main(String[] args) throws Exception {
- ZipFile zfile = new ZipFile(args[0]);
- Enumeration e = zfile.entries();
- while (e.hasMoreElements()) {
- ZipEntry zip = (ZipEntry)e.nextElement();
- if (zip.getName().endsWith(".class"))
- test(zfile.getInputStream(zip));
- }
- }
-
- static void test(InputStream is) throws Exception {
- is = new BufferedInputStream(is);
- ClassFile cf = new ClassFile(new DataInputStream(is));
- is.close();
- List list = cf.getMethods();
- int n = list.size();
- for (int i = 0; i < n; ++i) {
- MethodInfo minfo = (MethodInfo)list.get(i);
- CodeAttribute ca = minfo.getCodeAttribute();
- if (ca != null) {
- try {
- int max = ca.getMaxStack();
- int newMax = ca.computeMaxStack();
- if (max != newMax)
- System.out.println(max + " -> " + newMax +
- " for " + minfo.getName() + " (" +
- minfo.getDescriptor() + ") in " +
- cf.getName());
- }
- catch (BadBytecode e) {
- System.out.println(e.getMessage() +
- " for " + minfo.getName() + " (" +
- minfo.getDescriptor() + ") in " +
- cf.getName());
- }
- }
- }
- }
- }
|