commit fd9bc87c008bbc326aab38ed9637bcb8254dfb50 Author: github-classroom[bot] <66690702+github-classroom[bot]@users.noreply.github.com> Date: Sun Oct 1 10:17:02 2023 +0000 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..148363c --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +out + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..5c98b42 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,2 @@ +# Default ignored files +/workspace.xml \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/libraries/asm_7_1.xml b/.idea/libraries/asm_7_1.xml new file mode 100644 index 0000000..0a6e54f --- /dev/null +++ b/.idea/libraries/asm_7_1.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..49a9bf2 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..4026f72 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/sonarlint/issuestore/0/b/0b96f4b9af2dc03180ffa9b36f0b5aaa1c0fdf6d b/.idea/sonarlint/issuestore/0/b/0b96f4b9af2dc03180ffa9b36f0b5aaa1c0fdf6d new file mode 100644 index 0000000..e69de29 diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d new file mode 100644 index 0000000..e69de29 diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb new file mode 100644 index 0000000..dc122c2 --- /dev/null +++ b/.idea/sonarlint/issuestore/index.pb @@ -0,0 +1,5 @@ + +9 + README.md,8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d +A +src/Analyzer.java,0/b/0b96f4b9af2dc03180ffa9b36f0b5aaa1c0fdf6d \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..87a2b91 --- /dev/null +++ b/README.md @@ -0,0 +1,31 @@ +# Lab 2 - Software Performance 2023 + +This is Lab 2 of the **Software Performance** course at USI. + +Go to [this Lab on iCorsi](https://www.icorsi.ch/course/view.php?id=16963). + +## Submission Info + +Property | Value +------------ | ------------- +First Name | ... +Last Name | ... + +## Submission Checklist + +Please complete this checklist (turn [ ] into [X]) before you submit: + +- [ ] I completed the above Submission Info +- [ ] I built the project in IntelliJ (Build > Build Project) +- [ ] I ran test/test.sh and verified that it runs (and fails) +- [ ] I implemented the analysis in src/Analyzer.java, outputting: + - [ ] Number of classes (incl. interfaces and enums) + - [ ] Number of concrete non-native, non-abstract methods (methods with code) + - [ ] Total number of instructions (ignoring instructions with opcode -1) + - [ ] Total number of instructions by opcode (ignoring instructions with opcode -1) + - [ ] Total number of method invocation instructions (== call sites) + - [ ] Total number of conditional branch instructions (excluding GOTO, but including multi-way branches) +- [ ] I wrote the source code myself and did not look at the source code of my classmates +- [ ] I ran test/test.sh and verified that it runs and passes +- [ ] I committed my changes (at least one commit, but possibly many) +- [ ] I pushed my commits to GitHub diff --git a/lib/asm-7.1-javadoc.jar b/lib/asm-7.1-javadoc.jar new file mode 100644 index 0000000..aa69a1b Binary files /dev/null and b/lib/asm-7.1-javadoc.jar differ diff --git a/lib/asm-7.1-sources.jar b/lib/asm-7.1-sources.jar new file mode 100644 index 0000000..48f8aba Binary files /dev/null and b/lib/asm-7.1-sources.jar differ diff --git a/lib/asm-7.1.jar b/lib/asm-7.1.jar new file mode 100644 index 0000000..355eb08 Binary files /dev/null and b/lib/asm-7.1.jar differ diff --git a/lib/asm-tree-7.1-javadoc.jar b/lib/asm-tree-7.1-javadoc.jar new file mode 100644 index 0000000..3a75f80 Binary files /dev/null and b/lib/asm-tree-7.1-javadoc.jar differ diff --git a/lib/asm-tree-7.1-sources.jar b/lib/asm-tree-7.1-sources.jar new file mode 100644 index 0000000..df27a98 Binary files /dev/null and b/lib/asm-tree-7.1-sources.jar differ diff --git a/lib/asm-tree-7.1.jar b/lib/asm-tree-7.1.jar new file mode 100644 index 0000000..8e9ddbd Binary files /dev/null and b/lib/asm-tree-7.1.jar differ diff --git a/lib/asm-util-7.1-javadoc.jar b/lib/asm-util-7.1-javadoc.jar new file mode 100644 index 0000000..b4c7605 Binary files /dev/null and b/lib/asm-util-7.1-javadoc.jar differ diff --git a/lib/asm-util-7.1-sources.jar b/lib/asm-util-7.1-sources.jar new file mode 100644 index 0000000..499579e Binary files /dev/null and b/lib/asm-util-7.1-sources.jar differ diff --git a/lib/asm-util-7.1.jar b/lib/asm-util-7.1.jar new file mode 100644 index 0000000..5e61f2c Binary files /dev/null and b/lib/asm-util-7.1.jar differ diff --git a/src/Analyzer.java b/src/Analyzer.java new file mode 100644 index 0000000..81a0294 --- /dev/null +++ b/src/Analyzer.java @@ -0,0 +1,60 @@ +import java.io.IOException; +import java.io.InputStream; +import java.util.Enumeration; +import java.util.List; +import java.util.jar.JarEntry; +import java.util.jar.JarFile; + +import org.objectweb.asm.ClassReader; +import org.objectweb.asm.tree.ClassNode; +import org.objectweb.asm.tree.MethodNode; + + +public class Analyzer { + + // TODO add data structure to keep statistics + + public static void main(final String[] args) throws IOException { + final String jarFileName = args[0]; + System.out.println("Analyzing "+jarFileName); + final JarFile jar = new JarFile(jarFileName); + analyzeJar(jar); + // TODO output statistics + } + + private static void analyzeJar(final JarFile jar) throws IOException { + final Enumeration entries = jar.entries(); + while (entries.hasMoreElements()) { + final JarEntry entry = entries.nextElement(); + analyzeJarEntry(entry, jar); + } + } + + private static void analyzeJarEntry(final JarEntry entry, final JarFile jar) throws IOException { + if (!entry.isDirectory() && entry.getName().endsWith(".class")) { + System.out.println(" File "+entry.getName()); + final InputStream is = jar.getInputStream(entry); + final ClassReader classReader = new ClassReader(is); + final ClassNode classNode = new ClassNode(); + classReader.accept(classNode, ClassReader.SKIP_FRAMES); + analyzeClass(classNode); + } + } + + private static void analyzeClass(final ClassNode classNode) { + System.out.println(" Class "+classNode.name); + final List methods = classNode.methods; + for (final MethodNode methodNode : methods) { + analyzeMethod(methodNode); + } + + } + + private static void analyzeMethod(final MethodNode methodNode) { + System.out.println(" Method "+methodNode.name+methodNode.desc); + // TODO implement required analysis + } + + // TODO possibly add extra methods (adding classes is fine, too) + +} diff --git a/starter-lab-02-simple-bytecode-metrics.iml b/starter-lab-02-simple-bytecode-metrics.iml new file mode 100644 index 0000000..cc2439b --- /dev/null +++ b/starter-lab-02-simple-bytecode-metrics.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/test/asm-6.2.1.jar b/test/asm-6.2.1.jar new file mode 100644 index 0000000..cc00792 Binary files /dev/null and b/test/asm-6.2.1.jar differ diff --git a/test/asm-6.2.1.jar-expected.output.txt b/test/asm-6.2.1.jar-expected.output.txt new file mode 100644 index 0000000..ca89085 --- /dev/null +++ b/test/asm-6.2.1.jar-expected.output.txt @@ -0,0 +1,842 @@ +Analyzing asm-6.2.1.jar + File module-info.class + Class module-info + File org/objectweb/asm/AnnotationVisitor.class + Class org/objectweb/asm/AnnotationVisitor + Method (I)V + Method (ILorg/objectweb/asm/AnnotationVisitor;)V + Method visit(Ljava/lang/String;Ljava/lang/Object;)V + Method visitEnum(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitAnnotation(Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor; + Method visitArray(Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor; + Method visitEnd()V + File org/objectweb/asm/AnnotationWriter.class + Class org/objectweb/asm/AnnotationWriter + Method (Lorg/objectweb/asm/SymbolTable;ZLorg/objectweb/asm/ByteVector;Lorg/objectweb/asm/AnnotationWriter;)V + Method (Lorg/objectweb/asm/SymbolTable;Lorg/objectweb/asm/ByteVector;Lorg/objectweb/asm/AnnotationWriter;)V + Method visit(Ljava/lang/String;Ljava/lang/Object;)V + Method visitEnum(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitAnnotation(Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor; + Method visitArray(Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor; + Method visitEnd()V + Method computeAnnotationsSize(Ljava/lang/String;)I + Method putAnnotations(ILorg/objectweb/asm/ByteVector;)V + Method computeParameterAnnotationsSize(Ljava/lang/String;[Lorg/objectweb/asm/AnnotationWriter;I)I + Method putParameterAnnotations(I[Lorg/objectweb/asm/AnnotationWriter;ILorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/Attribute$Set.class + Class org/objectweb/asm/Attribute$Set + Method ()V + Method addAttributes(Lorg/objectweb/asm/Attribute;)V + Method toArray()[Lorg/objectweb/asm/Attribute; + Method contains(Lorg/objectweb/asm/Attribute;)Z + Method add(Lorg/objectweb/asm/Attribute;)V + File org/objectweb/asm/Attribute.class + Class org/objectweb/asm/Attribute + Method (Ljava/lang/String;)V + Method isUnknown()Z + Method isCodeAttribute()Z + Method getLabels()[Lorg/objectweb/asm/Label; + Method read(Lorg/objectweb/asm/ClassReader;II[CI[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Attribute; + Method write(Lorg/objectweb/asm/ClassWriter;[BIII)Lorg/objectweb/asm/ByteVector; + Method getAttributeCount()I + Method computeAttributesSize(Lorg/objectweb/asm/SymbolTable;)I + Method computeAttributesSize(Lorg/objectweb/asm/SymbolTable;[BIII)I + Method putAttributes(Lorg/objectweb/asm/SymbolTable;Lorg/objectweb/asm/ByteVector;)V + Method putAttributes(Lorg/objectweb/asm/SymbolTable;[BIIILorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/ByteVector.class + Class org/objectweb/asm/ByteVector + Method ()V + Method (I)V + Method ([B)V + Method putByte(I)Lorg/objectweb/asm/ByteVector; + Method put11(II)Lorg/objectweb/asm/ByteVector; + Method putShort(I)Lorg/objectweb/asm/ByteVector; + Method put12(II)Lorg/objectweb/asm/ByteVector; + Method put112(III)Lorg/objectweb/asm/ByteVector; + Method putInt(I)Lorg/objectweb/asm/ByteVector; + Method put122(III)Lorg/objectweb/asm/ByteVector; + Method putLong(J)Lorg/objectweb/asm/ByteVector; + Method putUTF8(Ljava/lang/String;)Lorg/objectweb/asm/ByteVector; + Method encodeUTF8(Ljava/lang/String;II)Lorg/objectweb/asm/ByteVector; + Method putByteArray([BII)Lorg/objectweb/asm/ByteVector; + Method enlarge(I)V + File org/objectweb/asm/ClassReader.class + Class org/objectweb/asm/ClassReader + Method ([B)V + Method ([BII)V + Method ([BIZ)V + Method (Ljava/io/InputStream;)V + Method (Ljava/lang/String;)V + Method readStream(Ljava/io/InputStream;Z)[B + Method getAccess()I + Method getClassName()Ljava/lang/String; + Method getSuperName()Ljava/lang/String; + Method getInterfaces()[Ljava/lang/String; + Method accept(Lorg/objectweb/asm/ClassVisitor;I)V + Method accept(Lorg/objectweb/asm/ClassVisitor;[Lorg/objectweb/asm/Attribute;I)V + Method readModule(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;IILjava/lang/String;)V + Method readField(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;I)I + Method readMethod(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;I)I + Method readCode(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;I)V + Method readLabel(I[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Label; + Method createLabel(I[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Label; + Method createDebugLabel(I[Lorg/objectweb/asm/Label;)V + Method readTypeAnnotations(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;IZ)[I + Method getTypeAnnotationBytecodeOffset([II)I + Method readTypeAnnotationTarget(Lorg/objectweb/asm/Context;I)I + Method readParameterAnnotations(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;IZ)V + Method readElementValues(Lorg/objectweb/asm/AnnotationVisitor;IZ[C)I + Method readElementValue(Lorg/objectweb/asm/AnnotationVisitor;ILjava/lang/String;[C)I + Method computeImplicitFrame(Lorg/objectweb/asm/Context;)V + Method readStackMapFrame(IZZLorg/objectweb/asm/Context;)I + Method readVerificationTypeInfo(I[Ljava/lang/Object;I[C[Lorg/objectweb/asm/Label;)I + Method getFirstAttributeOffset()I + Method readAttribute([Lorg/objectweb/asm/Attribute;Ljava/lang/String;II[CI[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Attribute; + Method getItemCount()I + Method getItem(I)I + Method getMaxStringLength()I + Method readByte(I)I + Method readUnsignedShort(I)I + Method readShort(I)S + Method readInt(I)I + Method readLong(I)J + Method readUTF8(I[C)Ljava/lang/String; + Method readUTF(I[C)Ljava/lang/String; + Method readUTF(II[C)Ljava/lang/String; + Method readStringish(I[C)Ljava/lang/String; + Method readClass(I[C)Ljava/lang/String; + Method readModule(I[C)Ljava/lang/String; + Method readPackage(I[C)Ljava/lang/String; + Method readConstantDynamic(I[C)Lorg/objectweb/asm/ConstantDynamic; + Method readConst(I[C)Ljava/lang/Object; + File org/objectweb/asm/ClassTooLargeException.class + Class org/objectweb/asm/ClassTooLargeException + Method (Ljava/lang/String;I)V + Method getClassName()Ljava/lang/String; + Method getConstantPoolCount()I + File org/objectweb/asm/ClassVisitor.class + Class org/objectweb/asm/ClassVisitor + Method (I)V + Method (ILorg/objectweb/asm/ClassVisitor;)V + Method visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V + Method visitSource(Ljava/lang/String;Ljava/lang/String;)V + Method visitModule(Ljava/lang/String;ILjava/lang/String;)Lorg/objectweb/asm/ModuleVisitor; + Method visitNestHostExperimental(Ljava/lang/String;)V + Method visitOuterClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAttribute(Lorg/objectweb/asm/Attribute;)V + Method visitNestMemberExperimental(Ljava/lang/String;)V + Method visitInnerClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V + Method visitField(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Lorg/objectweb/asm/FieldVisitor; + Method visitMethod(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lorg/objectweb/asm/MethodVisitor; + Method visitEnd()V + File org/objectweb/asm/ClassWriter.class + Class org/objectweb/asm/ClassWriter + Method (I)V + Method (Lorg/objectweb/asm/ClassReader;I)V + Method visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V + Method visitSource(Ljava/lang/String;Ljava/lang/String;)V + Method visitModule(Ljava/lang/String;ILjava/lang/String;)Lorg/objectweb/asm/ModuleVisitor; + Method visitNestHostExperimental(Ljava/lang/String;)V + Method visitOuterClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAttribute(Lorg/objectweb/asm/Attribute;)V + Method visitNestMemberExperimental(Ljava/lang/String;)V + Method visitInnerClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V + Method visitField(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Lorg/objectweb/asm/FieldVisitor; + Method visitMethod(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lorg/objectweb/asm/MethodVisitor; + Method visitEnd()V + Method toByteArray()[B + Method replaceAsmInstructions([BZ)[B + Method getAttributePrototypes()[Lorg/objectweb/asm/Attribute; + Method newConst(Ljava/lang/Object;)I + Method newUTF8(Ljava/lang/String;)I + Method newClass(Ljava/lang/String;)I + Method newMethodType(Ljava/lang/String;)I + Method newModule(Ljava/lang/String;)I + Method newPackage(Ljava/lang/String;)I + Method newHandle(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I + Method newHandle(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I + Method newConstantDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)I + Method newInvokeDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)I + Method newField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I + Method newMethod(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I + Method newNameType(Ljava/lang/String;Ljava/lang/String;)I + Method getCommonSuperClass(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; + Method getClassLoader()Ljava/lang/ClassLoader; + File org/objectweb/asm/ConstantDynamic.class + Class org/objectweb/asm/ConstantDynamic + Method (Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)V + Method getName()Ljava/lang/String; + Method getDescriptor()Ljava/lang/String; + Method getBootstrapMethod()Lorg/objectweb/asm/Handle; + Method getBootstrapMethodArguments()[Ljava/lang/Object; + Method equals(Ljava/lang/Object;)Z + Method hashCode()I + Method toString()Ljava/lang/String; + File org/objectweb/asm/Constants.class + Class org/objectweb/asm/Constants + Method ()V + File org/objectweb/asm/Context.class + Class org/objectweb/asm/Context + Method ()V + File org/objectweb/asm/CurrentFrame.class + Class org/objectweb/asm/CurrentFrame + Method (Lorg/objectweb/asm/Label;)V + Method execute(IILorg/objectweb/asm/Symbol;Lorg/objectweb/asm/SymbolTable;)V + File org/objectweb/asm/Edge.class + Class org/objectweb/asm/Edge + Method (ILorg/objectweb/asm/Label;Lorg/objectweb/asm/Edge;)V + File org/objectweb/asm/FieldVisitor.class + Class org/objectweb/asm/FieldVisitor + Method (I)V + Method (ILorg/objectweb/asm/FieldVisitor;)V + Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAttribute(Lorg/objectweb/asm/Attribute;)V + Method visitEnd()V + File org/objectweb/asm/FieldWriter.class + Class org/objectweb/asm/FieldWriter + Method (Lorg/objectweb/asm/SymbolTable;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V + Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAttribute(Lorg/objectweb/asm/Attribute;)V + Method visitEnd()V + Method computeFieldInfoSize()I + Method putFieldInfo(Lorg/objectweb/asm/ByteVector;)V + Method collectAttributePrototypes(Lorg/objectweb/asm/Attribute$Set;)V + File org/objectweb/asm/Frame.class + Class org/objectweb/asm/Frame + Method getAbstractTypeFromApiFormat(Lorg/objectweb/asm/SymbolTable;Ljava/lang/Object;)I + Method getAbstractTypeFromInternalName(Lorg/objectweb/asm/SymbolTable;Ljava/lang/String;)I + Method getAbstractTypeFromDescriptor(Lorg/objectweb/asm/SymbolTable;Ljava/lang/String;I)I + Method (Lorg/objectweb/asm/Label;)V + Method copyFrom(Lorg/objectweb/asm/Frame;)V + Method setInputFrameFromDescriptor(Lorg/objectweb/asm/SymbolTable;ILjava/lang/String;I)V + Method setInputFrameFromApiFormat(Lorg/objectweb/asm/SymbolTable;I[Ljava/lang/Object;I[Ljava/lang/Object;)V + Method getInputStackSize()I + Method getLocal(I)I + Method setLocal(II)V + Method push(I)V + Method push(Lorg/objectweb/asm/SymbolTable;Ljava/lang/String;)V + Method pop()I + Method pop(I)V + Method pop(Ljava/lang/String;)V + Method addInitializedType(I)V + Method getInitializedType(Lorg/objectweb/asm/SymbolTable;I)I + Method execute(IILorg/objectweb/asm/Symbol;Lorg/objectweb/asm/SymbolTable;)V + Method merge(Lorg/objectweb/asm/SymbolTable;Lorg/objectweb/asm/Frame;I)Z + Method merge(Lorg/objectweb/asm/SymbolTable;I[II)Z + Method accept(Lorg/objectweb/asm/MethodWriter;)V + Method putAbstractType(Lorg/objectweb/asm/SymbolTable;ILorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/Handle.class + Class org/objectweb/asm/Handle + Method (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V + Method getTag()I + Method getOwner()Ljava/lang/String; + Method getName()Ljava/lang/String; + Method getDesc()Ljava/lang/String; + Method isInterface()Z + Method equals(Ljava/lang/Object;)Z + Method hashCode()I + Method toString()Ljava/lang/String; + File org/objectweb/asm/Handler.class + Class org/objectweb/asm/Handler + Method (Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;ILjava/lang/String;)V + Method (Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;)V + Method removeRange(Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Handler; + Method getExceptionTableLength(Lorg/objectweb/asm/Handler;)I + Method getExceptionTableSize(Lorg/objectweb/asm/Handler;)I + Method putExceptionTable(Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/Label.class + Class org/objectweb/asm/Label + Method ()V + Method getOffset()I + Method getCanonicalInstance()Lorg/objectweb/asm/Label; + Method addLineNumber(I)V + Method accept(Lorg/objectweb/asm/MethodVisitor;Z)V + Method put(Lorg/objectweb/asm/ByteVector;IZ)V + Method addForwardReference(III)V + Method resolve([BI)Z + Method markSubroutine(S)V + Method addSubroutineRetSuccessors(Lorg/objectweb/asm/Label;)V + Method pushSuccessors(Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Label; + Method toString()Ljava/lang/String; + Method ()V + File org/objectweb/asm/MethodTooLargeException.class + Class org/objectweb/asm/MethodTooLargeException + Method (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V + Method getClassName()Ljava/lang/String; + Method getMethodName()Ljava/lang/String; + Method getDescriptor()Ljava/lang/String; + Method getCodeSize()I + File org/objectweb/asm/MethodVisitor.class + Class org/objectweb/asm/MethodVisitor + Method (I)V + Method (ILorg/objectweb/asm/MethodVisitor;)V + Method visitParameter(Ljava/lang/String;I)V + Method visitAnnotationDefault()Lorg/objectweb/asm/AnnotationVisitor; + Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAnnotableParameterCount(IZ)V + Method visitParameterAnnotation(ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAttribute(Lorg/objectweb/asm/Attribute;)V + Method visitCode()V + Method visitFrame(II[Ljava/lang/Object;I[Ljava/lang/Object;)V + Method visitInsn(I)V + Method visitIntInsn(II)V + Method visitVarInsn(II)V + Method visitTypeInsn(ILjava/lang/String;)V + Method visitFieldInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V + Method visitInvokeDynamicInsn(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)V + Method visitJumpInsn(ILorg/objectweb/asm/Label;)V + Method visitLabel(Lorg/objectweb/asm/Label;)V + Method visitLdcInsn(Ljava/lang/Object;)V + Method visitIincInsn(II)V + Method visitTableSwitchInsn(IILorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V + Method visitLookupSwitchInsn(Lorg/objectweb/asm/Label;[I[Lorg/objectweb/asm/Label;)V + Method visitMultiANewArrayInsn(Ljava/lang/String;I)V + Method visitInsnAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTryCatchBlock(Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Ljava/lang/String;)V + Method visitTryCatchAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitLocalVariable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;I)V + Method visitLocalVariableAnnotation(ILorg/objectweb/asm/TypePath;[Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;[ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitLineNumber(ILorg/objectweb/asm/Label;)V + Method visitMaxs(II)V + Method visitEnd()V + File org/objectweb/asm/MethodWriter.class + Class org/objectweb/asm/MethodWriter + Method (Lorg/objectweb/asm/SymbolTable;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;I)V + Method hasFrames()Z + Method hasAsmInstructions()Z + Method visitParameter(Ljava/lang/String;I)V + Method visitAnnotationDefault()Lorg/objectweb/asm/AnnotationVisitor; + Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAnnotableParameterCount(IZ)V + Method visitParameterAnnotation(ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitAttribute(Lorg/objectweb/asm/Attribute;)V + Method visitCode()V + Method visitFrame(II[Ljava/lang/Object;I[Ljava/lang/Object;)V + Method visitInsn(I)V + Method visitIntInsn(II)V + Method visitVarInsn(II)V + Method visitTypeInsn(ILjava/lang/String;)V + Method visitFieldInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V + Method visitInvokeDynamicInsn(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)V + Method visitJumpInsn(ILorg/objectweb/asm/Label;)V + Method visitLabel(Lorg/objectweb/asm/Label;)V + Method visitLdcInsn(Ljava/lang/Object;)V + Method visitIincInsn(II)V + Method visitTableSwitchInsn(IILorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V + Method visitLookupSwitchInsn(Lorg/objectweb/asm/Label;[I[Lorg/objectweb/asm/Label;)V + Method visitSwitchInsn(Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V + Method visitMultiANewArrayInsn(Ljava/lang/String;I)V + Method visitInsnAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitTryCatchBlock(Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Ljava/lang/String;)V + Method visitTryCatchAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitLocalVariable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;I)V + Method visitLocalVariableAnnotation(ILorg/objectweb/asm/TypePath;[Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;[ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor; + Method visitLineNumber(ILorg/objectweb/asm/Label;)V + Method visitMaxs(II)V + Method computeAllFrames()V + Method computeMaxStackAndLocal()V + Method visitEnd()V + Method addSuccessorToCurrentBasicBlock(ILorg/objectweb/asm/Label;)V + Method endCurrentBasicBlockWithNoSuccessor()V + Method visitFrameStart(III)I + Method visitAbstractType(II)V + Method visitFrameEnd()V + Method putFrame()V + Method putAbstractTypes(II)V + Method putFrameType(Ljava/lang/Object;)V + Method canCopyMethodAttributes(Lorg/objectweb/asm/ClassReader;IIZZIII)Z + Method computeMethodInfoSize()I + Method putMethodInfo(Lorg/objectweb/asm/ByteVector;)V + Method collectAttributePrototypes(Lorg/objectweb/asm/Attribute$Set;)V + Method ()V + File org/objectweb/asm/ModuleVisitor.class + Class org/objectweb/asm/ModuleVisitor + Method (I)V + Method (ILorg/objectweb/asm/ModuleVisitor;)V + Method visitMainClass(Ljava/lang/String;)V + Method visitPackage(Ljava/lang/String;)V + Method visitRequire(Ljava/lang/String;ILjava/lang/String;)V + Method visitExport(Ljava/lang/String;I[Ljava/lang/String;)V + Method visitOpen(Ljava/lang/String;I[Ljava/lang/String;)V + Method visitUse(Ljava/lang/String;)V + Method visitProvide(Ljava/lang/String;[Ljava/lang/String;)V + Method visitEnd()V + File org/objectweb/asm/ModuleWriter.class + Class org/objectweb/asm/ModuleWriter + Method (Lorg/objectweb/asm/SymbolTable;III)V + Method visitMainClass(Ljava/lang/String;)V + Method visitPackage(Ljava/lang/String;)V + Method visitRequire(Ljava/lang/String;ILjava/lang/String;)V + Method visitExport(Ljava/lang/String;I[Ljava/lang/String;)V + Method visitOpen(Ljava/lang/String;I[Ljava/lang/String;)V + Method visitUse(Ljava/lang/String;)V + Method visitProvide(Ljava/lang/String;[Ljava/lang/String;)V + Method visitEnd()V + Method getAttributeCount()I + Method computeAttributesSize()I + Method putAttributes(Lorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/Opcodes.class + Class org/objectweb/asm/Opcodes + Method ()V + File org/objectweb/asm/Symbol.class + Class org/objectweb/asm/Symbol + Method (IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V + Method getArgumentsAndReturnSizes()I + File org/objectweb/asm/SymbolTable$Entry.class + Class org/objectweb/asm/SymbolTable$Entry + Method (IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;JI)V + Method (IILjava/lang/String;I)V + Method (IILjava/lang/String;JI)V + Method (IILjava/lang/String;Ljava/lang/String;I)V + Method (IIJI)V + File org/objectweb/asm/SymbolTable.class + Class org/objectweb/asm/SymbolTable + Method (Lorg/objectweb/asm/ClassWriter;)V + Method (Lorg/objectweb/asm/ClassWriter;Lorg/objectweb/asm/ClassReader;)V + Method getSource()Lorg/objectweb/asm/ClassReader; + Method getMajorVersion()I + Method getClassName()Ljava/lang/String; + Method setMajorVersionAndClassName(ILjava/lang/String;)I + Method getConstantPoolCount()I + Method getConstantPoolLength()I + Method putConstantPool(Lorg/objectweb/asm/ByteVector;)V + Method computeBootstrapMethodsSize()I + Method putBootstrapMethods(Lorg/objectweb/asm/ByteVector;)V + Method get(I)Lorg/objectweb/asm/SymbolTable$Entry; + Method put(Lorg/objectweb/asm/SymbolTable$Entry;)Lorg/objectweb/asm/SymbolTable$Entry; + Method add(Lorg/objectweb/asm/SymbolTable$Entry;)V + Method addConstant(Ljava/lang/Object;)Lorg/objectweb/asm/Symbol; + Method addConstantClass(Ljava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantFieldref(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantMethodref(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Symbol; + Method addConstantMemberReference(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/SymbolTable$Entry; + Method addConstantMemberReference(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method addConstantString(Ljava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantInteger(I)Lorg/objectweb/asm/Symbol; + Method addConstantFloat(F)Lorg/objectweb/asm/Symbol; + Method addConstantInteger(II)Lorg/objectweb/asm/Symbol; + Method addConstantInteger(III)V + Method addConstantLong(J)Lorg/objectweb/asm/Symbol; + Method addConstantDouble(D)Lorg/objectweb/asm/Symbol; + Method addConstantLong(IJ)Lorg/objectweb/asm/Symbol; + Method addConstantLong(IIJ)V + Method addConstantNameAndType(Ljava/lang/String;Ljava/lang/String;)I + Method addConstantNameAndType(ILjava/lang/String;Ljava/lang/String;)V + Method addConstantUtf8(Ljava/lang/String;)I + Method addConstantUtf8(ILjava/lang/String;)V + Method addConstantMethodHandle(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Symbol; + Method addConstantMethodHandle(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V + Method addConstantMethodType(Ljava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Symbol; + Method addConstantInvokeDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Symbol; + Method addConstantDynamicOrInvokeDynamicReference(ILjava/lang/String;Ljava/lang/String;I)Lorg/objectweb/asm/Symbol; + Method addConstantDynamicOrInvokeDynamicReference(IILjava/lang/String;Ljava/lang/String;I)V + Method addConstantModule(Ljava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantPackage(Ljava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantUtf8Reference(ILjava/lang/String;)Lorg/objectweb/asm/Symbol; + Method addConstantUtf8Reference(IILjava/lang/String;)V + Method addBootstrapMethod(Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Symbol; + Method addBootstrapMethod(III)Lorg/objectweb/asm/Symbol; + Method getType(I)Lorg/objectweb/asm/Symbol; + Method addType(Ljava/lang/String;)I + Method addUninitializedType(Ljava/lang/String;I)I + Method addMergedType(II)I + Method addType(Lorg/objectweb/asm/SymbolTable$Entry;)I + Method hash(II)I + Method hash(IJ)I + Method hash(ILjava/lang/String;)I + Method hash(ILjava/lang/String;I)I + Method hash(ILjava/lang/String;Ljava/lang/String;)I + Method hash(ILjava/lang/String;Ljava/lang/String;I)I + Method hash(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I + Method hash(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I + File org/objectweb/asm/Type.class + Class org/objectweb/asm/Type + Method (ILjava/lang/String;II)V + Method getType(Ljava/lang/String;)Lorg/objectweb/asm/Type; + Method getObjectType(Ljava/lang/String;)Lorg/objectweb/asm/Type; + Method getMethodType(Ljava/lang/String;)Lorg/objectweb/asm/Type; + Method getMethodType(Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)Lorg/objectweb/asm/Type; + Method getType(Ljava/lang/Class;)Lorg/objectweb/asm/Type; + Method getType(Ljava/lang/reflect/Constructor;)Lorg/objectweb/asm/Type; + Method getType(Ljava/lang/reflect/Method;)Lorg/objectweb/asm/Type; + Method getArgumentTypes(Ljava/lang/String;)[Lorg/objectweb/asm/Type; + Method getArgumentTypes(Ljava/lang/reflect/Method;)[Lorg/objectweb/asm/Type; + Method getReturnType(Ljava/lang/String;)Lorg/objectweb/asm/Type; + Method getReturnType(Ljava/lang/reflect/Method;)Lorg/objectweb/asm/Type; + Method getArgumentsAndReturnSizes(Ljava/lang/String;)I + Method getType(Ljava/lang/String;II)Lorg/objectweb/asm/Type; + Method getSort()I + Method getDimensions()I + Method getElementType()Lorg/objectweb/asm/Type; + Method getClassName()Ljava/lang/String; + Method getInternalName()Ljava/lang/String; + Method getArgumentTypes()[Lorg/objectweb/asm/Type; + Method getReturnType()Lorg/objectweb/asm/Type; + Method getArgumentsAndReturnSizes()I + Method getDescriptor()Ljava/lang/String; + Method getMethodDescriptor(Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)Ljava/lang/String; + Method appendDescriptor(Ljava/lang/StringBuilder;)V + Method getInternalName(Ljava/lang/Class;)Ljava/lang/String; + Method getDescriptor(Ljava/lang/Class;)Ljava/lang/String; + Method getConstructorDescriptor(Ljava/lang/reflect/Constructor;)Ljava/lang/String; + Method getMethodDescriptor(Ljava/lang/reflect/Method;)Ljava/lang/String; + Method appendDescriptor(Ljava/lang/StringBuilder;Ljava/lang/Class;)V + Method getSize()I + Method getOpcode(I)I + Method equals(Ljava/lang/Object;)Z + Method hashCode()I + Method toString()Ljava/lang/String; + Method ()V + File org/objectweb/asm/TypePath.class + Class org/objectweb/asm/TypePath + Method ([BI)V + Method getLength()I + Method getStep(I)I + Method getStepArgument(I)I + Method fromString(Ljava/lang/String;)Lorg/objectweb/asm/TypePath; + Method toString()Ljava/lang/String; + Method put(Lorg/objectweb/asm/TypePath;Lorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/TypeReference.class + Class org/objectweb/asm/TypeReference + Method (I)V + Method newTypeReference(I)Lorg/objectweb/asm/TypeReference; + Method newTypeParameterReference(II)Lorg/objectweb/asm/TypeReference; + Method newTypeParameterBoundReference(III)Lorg/objectweb/asm/TypeReference; + Method newSuperTypeReference(I)Lorg/objectweb/asm/TypeReference; + Method newFormalParameterReference(I)Lorg/objectweb/asm/TypeReference; + Method newExceptionReference(I)Lorg/objectweb/asm/TypeReference; + Method newTryCatchReference(I)Lorg/objectweb/asm/TypeReference; + Method newTypeArgumentReference(II)Lorg/objectweb/asm/TypeReference; + Method getSort()I + Method getTypeParameterIndex()I + Method getTypeParameterBoundIndex()I + Method getSuperTypeIndex()I + Method getFormalParameterIndex()I + Method getExceptionIndex()I + Method getTryCatchBlockIndex()I + Method getTypeArgumentIndex()I + Method getValue()I + Method putTarget(ILorg/objectweb/asm/ByteVector;)V + File org/objectweb/asm/signature/SignatureReader.class + Class org/objectweb/asm/signature/SignatureReader + Method (Ljava/lang/String;)V + Method accept(Lorg/objectweb/asm/signature/SignatureVisitor;)V + Method acceptType(Lorg/objectweb/asm/signature/SignatureVisitor;)V + Method parseType(Ljava/lang/String;ILorg/objectweb/asm/signature/SignatureVisitor;)I + File org/objectweb/asm/signature/SignatureVisitor.class + Class org/objectweb/asm/signature/SignatureVisitor + Method (I)V + Method visitFormalTypeParameter(Ljava/lang/String;)V + Method visitClassBound()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitInterfaceBound()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitSuperclass()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitInterface()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitParameterType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitReturnType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitExceptionType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitBaseType(C)V + Method visitTypeVariable(Ljava/lang/String;)V + Method visitArrayType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitClassType(Ljava/lang/String;)V + Method visitInnerClassType(Ljava/lang/String;)V + Method visitTypeArgument()V + Method visitTypeArgument(C)Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitEnd()V + File org/objectweb/asm/signature/SignatureWriter.class + Class org/objectweb/asm/signature/SignatureWriter + Method ()V + Method visitFormalTypeParameter(Ljava/lang/String;)V + Method visitClassBound()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitInterfaceBound()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitSuperclass()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitInterface()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitParameterType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitReturnType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitExceptionType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitBaseType(C)V + Method visitTypeVariable(Ljava/lang/String;)V + Method visitArrayType()Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitClassType(Ljava/lang/String;)V + Method visitInnerClassType(Ljava/lang/String;)V + Method visitTypeArgument()V + Method visitTypeArgument(C)Lorg/objectweb/asm/signature/SignatureVisitor; + Method visitEnd()V + Method toString()Ljava/lang/String; + Method endFormals()V + Method endArguments()V +=== STATISTICS === +classes: 36 +methods: 506 +instructions: 23388 +invoke instructions: 2388 +branch instructions: 1313 +OPCODE MNEMONIC COUNT +0 NOP 0 +1 ACONST_NULL 123 +2 ICONST_M1 80 +3 ICONST_0 483 +4 ICONST_1 356 +5 ICONST_2 213 +6 ICONST_3 63 +7 ICONST_4 84 +8 ICONST_5 13 +9 LCONST_0 4 +10 LCONST_1 0 +11 FCONST_0 0 +12 FCONST_1 0 +13 FCONST_2 0 +14 DCONST_0 0 +15 DCONST_1 0 +16 BIPUSH 646 +17 SIPUSH 227 +18 LDC 499 +19 LDC_W 0 +20 LDC2_W 0 +21 ILOAD 2516 +22 LLOAD 20 +23 FLOAD 2 +24 DLOAD 2 +25 ALOAD 5255 +26 ILOAD_0 0 +27 ILOAD_1 0 +28 ILOAD_2 0 +29 ILOAD_3 0 +30 LLOAD_0 0 +31 LLOAD_1 0 +32 LLOAD_2 0 +33 LLOAD_3 0 +34 FLOAD_0 0 +35 FLOAD_1 0 +36 FLOAD_2 0 +37 FLOAD_3 0 +38 DLOAD_0 0 +39 DLOAD_1 0 +40 DLOAD_2 0 +41 DLOAD_3 0 +42 ALOAD_0 0 +43 ALOAD_1 0 +44 ALOAD_2 0 +45 ALOAD_3 0 +46 IALOAD 88 +47 LALOAD 1 +48 FALOAD 1 +49 DALOAD 1 +50 AALOAD 71 +51 BALOAD 45 +52 CALOAD 1 +53 SALOAD 1 +54 ISTORE 879 +55 LSTORE 4 +56 FSTORE 1 +57 DSTORE 1 +58 ASTORE 424 +59 ISTORE_0 0 +60 ISTORE_1 0 +61 ISTORE_2 0 +62 ISTORE_3 0 +63 LSTORE_0 0 +64 LSTORE_1 0 +65 LSTORE_2 0 +66 LSTORE_3 0 +67 FSTORE_0 0 +68 FSTORE_1 0 +69 FSTORE_2 0 +70 FSTORE_3 0 +71 DSTORE_0 0 +72 DSTORE_1 0 +73 DSTORE_2 0 +74 DSTORE_3 0 +75 ASTORE_0 0 +76 ASTORE_1 0 +77 ASTORE_2 0 +78 ASTORE_3 0 +79 IASTORE 241 +80 LASTORE 1 +81 FASTORE 1 +82 DASTORE 1 +83 AASTORE 41 +84 BASTORE 55 +85 CASTORE 4 +86 SASTORE 1 +87 POP 317 +88 POP2 0 +89 DUP 500 +90 DUP_X1 37 +91 DUP_X2 5 +92 DUP2 1 +93 DUP2_X1 0 +94 DUP2_X2 0 +95 SWAP 0 +96 IADD 525 +97 LADD 0 +98 FADD 0 +99 DADD 0 +100 ISUB 101 +101 LSUB 0 +102 FSUB 0 +103 DSUB 0 +104 IMUL 39 +105 LMUL 0 +106 FMUL 0 +107 DMUL 0 +108 IDIV 3 +109 LDIV 0 +110 FDIV 0 +111 DDIV 0 +112 IREM 11 +113 LREM 0 +114 FREM 0 +115 DREM 0 +116 INEG 1 +117 LNEG 0 +118 FNEG 0 +119 DNEG 0 +120 ISHL 25 +121 LSHL 2 +122 ISHR 19 +123 LSHR 0 +124 IUSHR 30 +125 LUSHR 2 +126 IAND 182 +127 LAND 1 +128 IOR 79 +129 LOR 2 +130 IXOR 12 +131 LXOR 0 +132 IINC 477 +133 I2L 17 +134 I2F 0 +135 I2D 0 +136 L2I 6 +137 L2F 0 +138 L2D 0 +139 F2I 0 +140 F2L 0 +141 F2D 0 +142 D2I 0 +143 D2L 0 +144 D2F 0 +145 I2B 53 +146 I2C 5 +147 I2S 31 +148 LCMP 6 +149 FCMPL 0 +150 FCMPG 0 +151 DCMPL 0 +152 DCMPG 0 +153 IFEQ 264 +154 IFNE 68 +155 IFLT 4 +156 IFGE 1 +157 IFGT 0 +158 IFLE 73 +159 IF_ICMPEQ 108 +160 IF_ICMPNE 194 +161 IF_ICMPLT 30 +162 IF_ICMPGE 148 +163 IF_ICMPGT 16 +164 IF_ICMPLE 36 +165 IF_ACMPEQ 11 +166 IF_ACMPNE 27 +167 GOTO 718 +168 JSR 0 +169 RET 0 +170 TABLESWITCH 28 +171 LOOKUPSWITCH 5 +172 IRETURN 176 +173 LRETURN 1 +174 FRETURN 0 +175 DRETURN 0 +176 ARETURN 267 +177 RETURN 241 +178 GETSTATIC 72 +179 PUTSTATIC 18 +180 GETFIELD 2211 +181 PUTFIELD 473 +182 INVOKEVIRTUAL 1609 +183 INVOKESPECIAL 630 +184 INVOKESTATIC 149 +185 INVOKEINTERFACE 0 +186 INVOKEDYNAMIC 0 +187 NEW 225 +188 NEWARRAY 46 +189 ANEWARRAY 30 +190 ARRAYLENGTH 111 +191 ATHROW 68 +192 CHECKCAST 55 +193 INSTANCEOF 37 +194 MONITORENTER 0 +195 MONITOREXIT 0 +196 WIDE 0 +197 MULTIANEWARRAY 0 +198 IFNULL 243 +199 IFNONNULL 57 +200 0 +201 0 +202 0 +203 0 +204 0 +205 0 +206 0 +207 0 +208 0 +209 0 +210 0 +211 0 +212 0 +213 0 +214 0 +215 0 +216 0 +217 0 +218 0 +219 0 +220 0 +221 0 +222 0 +223 0 +224 0 +225 0 +226 0 +227 0 +228 0 +229 0 +230 0 +231 0 +232 0 +233 0 +234 0 +235 0 +236 0 +237 0 +238 0 +239 0 +240 0 +241 0 +242 0 +243 0 +244 0 +245 0 +246 0 +247 0 +248 0 +249 0 +250 0 +251 0 +252 0 +253 0 +254 0 +255 0 diff --git a/test/test.sh b/test/test.sh new file mode 100755 index 0000000..fec2cd9 --- /dev/null +++ b/test/test.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +echo Testing... + +# Remove actual output from prior run (if any) +rm -f asm-6.2.1.jar-actual.output.txt +# There should be only one build folder, with the name of this IntelliJ project. Get that name. +OUT=`ls ../out/production` +# Run the program, storing stdout in a file +java -cp ../out/production/${OUT}:../lib/asm-7.1.jar:../lib/asm-tree-7.1.jar:../lib/asm-util-7.1.jar Analyzer asm-6.2.1.jar > asm-6.2.1.jar-actual.output.txt +# Compare actual to expected output +diff asm-6.2.1.jar-actual.output.txt asm-6.2.1.jar-expected.output.txt +RESULT=$? +# If actual output differs from expected output, print "failed" +if [ ${RESULT} -eq 0 ]; then + echo passed +else + echo failed +fi