Bug#612746: asm2: Test suite enablement and misc warning message tidy

James Page james.page at canonical.com
Thu Feb 10 12:00:07 UTC 2011


Package: asm2
Version: 2.2.3-4
Severity: normal
Tags: patch
User: ubuntu-devel at lists.ubuntu.com
Usertags: origin-ubuntu natty ubuntu-patch



*** /tmp/tmpxiYCDB
In Ubuntu, we've applied the attached patch to achieve the following:

  * Amended build process to execute test suite (LP: #452900) 
  * Amended misc javac and javadoc warning messages (LP: #452910)
  * Updated Standards-Version: 3.9.1, no changes required.
  * Added source/format: 3.0 (quilt).

The state of the upstream test suite in not great and this patch has to disable
a number of aspects of the suite which simply don't work.  As asm4 is now being 
discussed upstream, a fix to asm2 is unlikely upstream (either for warnings or
fixing up the test suite).

I also set it up so it runs in a reasonable amount of time against the commons-lang
codebase.  Also note that because of the custom way Junit is executed via ant, the 
build does not fail if the test suite fails.

Without significant refactoring of the ow-utils package we can't change this.


-- System Information:
Debian Release: squeeze/sid
  APT prefers maverick-updates
  APT policy: (500, 'maverick-updates'), (500, 'maverick-security'), (500, 'maverick')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.35-25-generic (SMP w/8 CPU cores)
Locale: LANG=en_GB.utf8, LC_CTYPE=en_GB.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
-------------- next part --------------
=== modified file 'debian/changelog'

=== modified file 'debian/control'
--- debian/control	2010-08-25 09:14:45 +0000
+++ debian/control	2011-02-10 11:38:51 +0000
@@ -1,11 +1,11 @@
 Source: asm2
 Section: java
 Priority: optional
 Maintainer: Debian Java Maintainers <pkg-java-maintainers at lists.alioth.debian.org>
 Uploaders: Barry Hawkins <barry at alltc.com>, Michael Koch <konqueror at gmx.de>
 Build-Depends: debhelper (>= 6), cdbs, ant (>= 1.6.5), default-jdk, quilt
-Build-Depends-Indep: maven-repo-helper, libow-util-ant-tasks-java (>= 1.3-2), openjdk-6-doc
-Standards-Version: 3.8.2
+Build-Depends-Indep: maven-repo-helper, libow-util-ant-tasks-java (>= 1.3-2), openjdk-6-doc, 
+ ant-optional (>= 1.6.5), janino, libcommons-lang-java, junit
+Standards-Version: 3.9.1
 Vcs-Svn: svn://svn.debian.org/svn/pkg-java/trunk/asm2
 Vcs-Browser: http://svn.debian.org/wsvn/pkg-java/trunk/asm2
 Homepage: http://asm.objectweb.org/

=== added file 'debian/patches/javac_warnings.diff'
--- debian/patches/javac_warnings.diff	1970-01-01 00:00:00 +0000
+++ debian/patches/javac_warnings.diff	2011-02-10 11:38:40 +0000
@@ -0,0 +1,27 @@
+Description: Remove invalid characters from .java files to prevent javac warnings
+Author: James Page <james.page at canonical.com>
+Forwarded: no
+Index: asm2.fix-452910/src/org/objectweb/asm/attrs/StackMapTableAttribute.java
+===================================================================
+--- asm2.fix-452910.orig/src/org/objectweb/asm/attrs/StackMapTableAttribute.java	2010-09-08 13:06:12.466772893 +0100
++++ asm2.fix-452910/src/org/objectweb/asm/attrs/StackMapTableAttribute.java	2010-09-08 13:08:05.886075188 +0100
+@@ -43,9 +43,9 @@
+ 
+ /**
+  * The stack map attribute is used during the process of verification by
+- * typechecking (?4.11.1). <br> <br> A stack map attribute consists of zero or
++ * typechecking ($4.11.1). <br> <br> A stack map attribute consists of zero or
+  * more stack map frames. Each stack map frame specifies (either explicitly or
+- * implicitly) a bytecode offset, the verification types (?4.11.1) for the local
++ * implicitly) a bytecode offset, the verification types ($4.11.1) for the local
+  * variables, and the verification types for the operand stack. <br> <br> The
+  * type checker deals with and manipulates the expected types of a method's
+  * local variables and operand stack. Throughout this section, a location refers
+@@ -625,6 +625,7 @@
+ 
+             int type = FULL_FRAME;
+             int k = 0;
++
+             if (cstackSize == 0) {
+                 k = clocalsSize - localsSize;
+                 switch (k) {

=== added file 'debian/patches/javadoc_warnings.diff'
--- debian/patches/javadoc_warnings.diff	1970-01-01 00:00:00 +0000
+++ debian/patches/javadoc_warnings.diff	2011-02-10 11:38:40 +0000
@@ -0,0 +1,129 @@
+Description: Remove invalid javadoc markup to prevent javadoc warnings
+Author: James Page <james.page at canonical.com>
+Forwarded: no
+Index: asm2.fix-452910/src/org/objectweb/asm/tree/ClassNode.java
+===================================================================
+--- asm2.fix-452910.orig/src/org/objectweb/asm/tree/ClassNode.java	2010-09-08 13:09:13.966150982 +0100
++++ asm2.fix-452910/src/org/objectweb/asm/tree/ClassNode.java	2010-09-08 13:35:29.066511830 +0100
+@@ -115,24 +115,18 @@
+     /**
+      * Informations about the inner classes of this class. This list is a list
+      * of {@link InnerClassNode} objects.
+-     * 
+-     * @associates org.objectweb.asm.tree.InnerClassNode
+      */
+     public List innerClasses;
+ 
+     /**
+      * The fields of this class. This list is a list of {@link FieldNode}
+      * objects.
+-     * 
+-     * @associates org.objectweb.asm.tree.FieldNode
+      */
+     public List fields;
+ 
+     /**
+      * The methods of this class. This list is a list of {@link MethodNode}
+      * objects.
+-     * 
+-     * @associates org.objectweb.asm.tree.MethodNode
+      */
+     public List methods;
+ 
+Index: asm2.fix-452910/src/org/objectweb/asm/tree/MemberNode.java
+===================================================================
+--- asm2.fix-452910.orig/src/org/objectweb/asm/tree/MemberNode.java	2010-09-08 13:09:26.146699427 +0100
++++ asm2.fix-452910/src/org/objectweb/asm/tree/MemberNode.java	2010-09-08 13:14:25.977952855 +0100
+@@ -46,8 +46,6 @@
+      * The runtime visible annotations of this class, field or method. This list
+      * is a list of {@link AnnotationNode} objects. May be <tt>null</tt>.
+      * 
+-     * @associates org.objectweb.asm.tree.AnnotationNode
+-     * @label visible
+      */
+     public List visibleAnnotations;
+ 
+@@ -55,8 +53,6 @@
+      * The runtime invisible annotations of this class, field or method. This
+      * list is a list of {@link AnnotationNode} objects. May be <tt>null</tt>.
+      * 
+-     * @associates org.objectweb.asm.tree.AnnotationNode
+-     * @label invisible
+      */
+     public List invisibleAnnotations;
+ 
+@@ -64,7 +60,6 @@
+      * The non standard attributes of this class, field or method. This list is
+      * a list of {@link Attribute} objects. May be <tt>null</tt>.
+      * 
+-     * @associates org.objectweb.asm.Attribute
+      */
+     public List attrs;
+ 
+Index: asm2.fix-452910/src/org/objectweb/asm/tree/MethodNode.java
+===================================================================
+--- asm2.fix-452910.orig/src/org/objectweb/asm/tree/MethodNode.java	2010-09-08 13:09:35.938575608 +0100
++++ asm2.fix-452910/src/org/objectweb/asm/tree/MethodNode.java	2010-09-08 13:14:13.496075699 +0100
+@@ -90,8 +90,6 @@
+      * The runtime visible parameter annotations of this method. These lists are
+      * lists of {@link AnnotationNode} objects. May be <tt>null</tt>.
+      * 
+-     * @associates org.objectweb.asm.tree.AnnotationNode
+-     * @label invisible parameters
+      */
+     public List[] visibleParameterAnnotations;
+ 
+@@ -99,8 +97,6 @@
+      * The runtime invisible parameter annotations of this method. These lists
+      * are lists of {@link AnnotationNode} objects. May be <tt>null</tt>.
+      * 
+-     * @associates org.objectweb.asm.tree.AnnotationNode
+-     * @label visible parameters
+      */
+     public List[] invisibleParameterAnnotations;
+ 
+@@ -108,8 +104,6 @@
+      * The instructions of this method. This list is a list of
+      * {@link AbstractInsnNode} objects.
+      * 
+-     * @associates org.objectweb.asm.tree.AbstractInsnNode
+-     * @label instructions
+      */
+     public List instructions;
+ 
+@@ -117,7 +111,6 @@
+      * The try catch blocks of this method. This list is a list of
+      * {@link TryCatchBlockNode} objects.
+      * 
+-     * @associates org.objectweb.asm.tree.TryCatchBlockNode
+      */
+     public List tryCatchBlocks;
+ 
+@@ -135,7 +128,6 @@
+      * The local variables of this method. This list is a list of
+      * {@link LocalVariableNode} objects. May be <tt>null</tt>
+      * 
+-     * @associates org.objectweb.asm.tree.LocalVariableNode
+      */
+     public List localVariables;
+ 
+@@ -143,7 +135,6 @@
+      * The line numbers of this method. This list is a list of
+      * {@link LineNumberNode} objects. May be <tt>null</tt>
+      * 
+-     * @associates org.objectweb.asm.tree.LineNumberNode
+      */
+     public List lineNumbers;
+ 
+Index: asm2.fix-452910/src/org/objectweb/asm/util/AbstractVisitor.java
+===================================================================
+--- asm2.fix-452910.orig/src/org/objectweb/asm/util/AbstractVisitor.java	2010-09-08 13:10:01.687956915 +0100
++++ asm2.fix-452910/src/org/objectweb/asm/util/AbstractVisitor.java	2010-09-08 13:37:08.466386859 +0100
+@@ -34,6 +34,7 @@
+ import java.util.List;
+ 
+ import org.objectweb.asm.Attribute;
++import org.objectweb.asm.util.attrs.ASMifiable;
+ import org.objectweb.asm.util.attrs.ASMStackMapAttribute;
+ import org.objectweb.asm.util.attrs.ASMStackMapTableAttribute;
+ 

=== modified file 'debian/patches/series'
--- debian/patches/series	2009-07-21 20:31:27 +0000
+++ debian/patches/series	2011-02-10 11:38:40 +0000
@@ -1 +1,4 @@
 build.patch
+javac_warnings.diff
+javadoc_warnings.diff
+testsuite_fix.diff

=== added file 'debian/patches/testsuite_fix.diff'
--- debian/patches/testsuite_fix.diff	1970-01-01 00:00:00 +0000
+++ debian/patches/testsuite_fix.diff	2011-02-10 11:38:40 +0000
@@ -0,0 +1,1537 @@
+Description: Enable testsuite; note that this does not fail the build if a test 
+ fails 
+Author: James Page <james.page at canonical.com>
+Forwarded: no
+Index: asm2.fix-452900/test/build.xml
+===================================================================
+--- asm2.fix-452900.orig/test/build.xml	2010-09-20 16:10:52.596275645 +0100
++++ asm2.fix-452900/test/build.xml	2010-09-20 16:12:26.144469184 +0100
+@@ -100,17 +100,18 @@
+     <fail/>
+   </target>
+   
+-  <target name="init" depends="properties,check">  
++  <target name="init" depends="properties">  
+     <mkdir dir="${out.test}"/>
+     <mkdir dir="${out.test}/reports"/>
+     <path id="test.classpath">
+       <pathelement location="${classes}"/>
++      <pathelement path="${java.class.path}"/>
+       <pathelement location="${out.test}"/>
+-      <pathelement path="${bcel.path}"/>
++      <!--pathelement path="${bcel.path}"/>
+       <pathelement path="${serp.path}"/>  
+       <pathelement path="${javassist.path}"/>
+       <pathelement path="${janino.path}"/>
+-      <path refid="cobertura.classpath"/>
++      <path refid="cobertura.classpath"/-->
+     </path>
+   </target>
+   
+@@ -173,8 +174,8 @@
+     <multipleAnt dir="${test.conform}" inheritRefs="true"/>
+     <!--multipleAnt dir="${test.deviance}" inheritRefs="true"/>
+     <multipleAnt dir="${test.thread}" inheritRefs="true"/>
+-    <multipleAnt dir="${test.stress}" inheritRefs="true"/-->
+-    <multipleAnt dir="${test.perf}" inheritRefs="true"/>
++    <multipleAnt dir="${test.stress}" inheritRefs="true"/>
++    <multipleAnt dir="${test.perf}" inheritRefs="true"/-->
+   </target>
+ 
+   <target name="testType" depends="compile" if="test.type">
+@@ -189,8 +190,8 @@
+     <multipleAnt dir="${test.conform}" target="${test.name}" inheritRefs="true"/>
+     <!--multipleAnt dir="${test.deviance}" target="${test.name}" inheritRefs="true"/>
+     <multipleAnt dir="${test.thread}" target="${test.name}" inheritRefs="true"/>
+-    <multipleAnt dir="${test.stress}" target="${test.name}" inheritRefs="true"/-->
+-    <multipleAnt dir="${test.perf}" target="${test.name}" inheritRefs="true"/>
++    <multipleAnt dir="${test.stress}" target="${test.name}" inheritRefs="true"/>
++    <multipleAnt dir="${test.perf}" target="${test.name}" inheritRefs="true"/-->
+   </target>
+ 
+   <target name="test" depends="testAll,testType,testGroup,testName">
+Index: asm2.fix-452900/test/perf/all.xml
+===================================================================
+--- asm2.fix-452900.orig/test/perf/all.xml	2010-09-20 16:10:52.585655049 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,21 +0,0 @@
+-<project name="perf" default="test">
+-  <target name="test">
+-    <java classname="org.objectweb.asm.ALLPerfTest" fork="yes">
+-      <classpath>
+-        <pathelement location="${out.build}"/>
+-        <pathelement location="${out.test}"/>
+-        <fileset dir="${test}">
+-          <include name="lib/bcel.jar"/>
+-          <include name="lib/serp.jar"/>
+-          <include name="lib/javassist.jar"/>
+-          <!-- xslt engines -->
+-          <include name="lib/jd.xslt-1.5.5.jar"/>
+-          <include name="lib/saxon7.jar"/>
+-          <include name="lib/xalan-2.6.0.jar"/>
+-        </fileset>
+-      </classpath>
+-      <arg value="${out.test}/"/>
+-      <arg value="${java.home}/../lib/tools.jar"/>
+-    </java>
+-  </target>
+-</project>
+Index: asm2.fix-452900/test/perf/mem.xml
+===================================================================
+--- asm2.fix-452900.orig/test/perf/mem.xml	2010-09-20 16:10:52.596275645 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,12 +0,0 @@
+-<project name="perf" default="test">
+-  <target name="test">
+-    <java classname="org.objectweb.asm.ASMMemTest" fork="yes">
+-      <classpath>
+-        <pathelement location="${out.build}"/>
+-        <pathelement location="${out.test}"/>
+-      </classpath>
+-      <arg value="${java.home}/lib/rt.jar"/>
+-      <arg value="2000"/>
+-    </java>
+-  </target>
+-</project>
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/ALLPerfTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/ALLPerfTest.java	2010-09-20 16:10:52.523806126 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,491 +0,0 @@
+-/***
+- * ASM performance test: measures the performances of asm package
+- * Copyright (c) 2002-2005 France Telecom
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm;
+-
+-import java.io.File;
+-import java.io.IOException;
+-import java.io.InputStream;
+-import java.io.FileOutputStream;
+-import java.util.ArrayList;
+-import java.util.Enumeration;
+-import java.util.List;
+-import java.util.zip.ZipEntry;
+-import java.util.zip.ZipFile;
+-import java.util.zip.ZipOutputStream;
+-
+-import org.objectweb.asm.ClassReader;
+-import org.objectweb.asm.ClassWriter;
+-import org.objectweb.asm.commons.EmptyVisitor;
+-import org.objectweb.asm.tree.ClassNode;
+-
+-/**
+- * @author Eric Bruneton
+- */
+-public abstract class ALLPerfTest extends ClassLoader {
+-
+-    private static ZipFile zip;
+-
+-    private static ZipOutputStream dst;
+-
+-    private static int mode;
+-
+-    private static int total;
+-
+-    private static int totalSize;
+-
+-    private static double[][] perfs;
+-
+-    static boolean compute;
+-
+-    static boolean skipDebug;
+-
+-    public static void main(String[] args) throws Exception {
+-        ZipFile zip = new ZipFile(System.getProperty("java.home")
+-                + "/lib/rt.jar");
+-        List classes = new ArrayList();
+-
+-        Enumeration entries = zip.entries();
+-        while (entries.hasMoreElements()) {
+-            ZipEntry e = (ZipEntry) entries.nextElement();
+-            String s = e.getName();
+-            if (s.endsWith(".class")) {
+-                s = s.substring(0, s.length() - 6).replace('/', '.');
+-                InputStream is = zip.getInputStream(e);
+-                classes.add(readClass(is));
+-            }
+-        }
+-
+-        for (int i = 0; i < 10; ++i) {
+-            long t = System.currentTimeMillis();
+-            for (int j = 0; j < classes.size(); ++j) {
+-                byte[] b = (byte[]) classes.get(j);
+-                new ClassReader(b).accept(new EmptyVisitor(), false);
+-            }
+-            t = System.currentTimeMillis() - t;
+-            System.out.println("Time to deserialize " + classes.size()
+-                    + " classes = " + t + " ms");
+-        }
+-
+-        for (int i = 0; i < 10; ++i) {
+-            long t = System.currentTimeMillis();
+-            for (int j = 0; j < classes.size(); ++j) {
+-                byte[] b = (byte[]) classes.get(j);
+-                ClassWriter cw = new ClassWriter(false);
+-                new ClassReader(b).accept(cw, false);
+-                cw.toByteArray();
+-            }
+-            t = System.currentTimeMillis() - t;
+-            System.out.println("Time to deserialize and reserialize "
+-                    + classes.size() + " classes = " + t + " ms");
+-        }
+-
+-        for (int i = 0; i < 10; ++i) {
+-            long t = System.currentTimeMillis();
+-            for (int j = 0; j < classes.size(); ++j) {
+-                byte[] b = (byte[]) classes.get(j);
+-                ClassReader cr = new ClassReader(b);
+-                ClassWriter cw = new ClassWriter(cr, false);
+-                cr.accept(cw, false);
+-                cw.toByteArray();
+-            }
+-            t = System.currentTimeMillis() - t;
+-            System.out.println("Time to deserialize and reserialize "
+-                    + classes.size() + " classes (with copyPool) = " + t + " ms");
+-        }
+-        
+-        for (int i = 0; i < 10; ++i) {
+-            long t = System.currentTimeMillis();
+-            for (int j = 0; j < classes.size(); ++j) {
+-                byte[] b = (byte[]) classes.get(j);
+-                ClassReader cr = new ClassReader(b);
+-                ClassWriter cw = new ClassWriter(true);
+-                cr.accept(cw, false);
+-                cw.toByteArray();
+-            }
+-            t = System.currentTimeMillis() - t;
+-            System.out.println("Time to deserialize and reserialize "
+-                    + classes.size() + " classes (with computeMaxs) = " + t + " ms");
+-        }
+-
+-        for (int i = 0; i < 10; ++i) {
+-            long t = System.currentTimeMillis();
+-            for (int j = 0; j < classes.size(); ++j) {
+-                byte[] b = (byte[]) classes.get(j);
+-                new ClassReader(b).accept(new ClassNode(), false);
+-            }
+-            t = System.currentTimeMillis() - t;
+-            System.out.println("Time to deserialize " + classes.size()
+-                    + " classes with tree package = " + t + " ms");
+-        }
+-
+-        for (int i = 0; i < 10; ++i) {
+-            long t = System.currentTimeMillis();
+-            for (int j = 0; j < classes.size(); ++j) {
+-                byte[] b = (byte[]) classes.get(j);
+-                ClassWriter cw = new ClassWriter(false);
+-                ClassNode cn = new ClassNode();
+-                new ClassReader(b).accept(cn, false);
+-                cn.accept(cw);
+-                cw.toByteArray();
+-            }
+-            t = System.currentTimeMillis() - t;
+-            System.out.println("Time to deserialize and reserialize "
+-                    + classes.size() + " classes with tree package = " + t
+-                    + " ms");
+-        }
+-
+-        classes = null;
+-
+-        System.out.println("\nComparing ASM, BCEL, SERP and Javassist performances...");
+-        System.out.println("This may take 20 to 30 minutes\n");
+-        // measures performances
+-        System.out.println("ASM PERFORMANCES\n");
+-        new ASMPerfTest().perfs(args);
+-        double[][] asmPerfs = perfs;
+-        System.out.println("\nBCEL PERFORMANCES\n");
+-        new BCELPerfTest().perfs(args);
+-        double[][] bcelPerfs = perfs;
+-        System.out.println("\nSERP PERFORMANCES\n");
+-        new SERPPerfTest().perfs(args);
+-        double[][] serpPerfs = perfs;
+-        System.out.println("\nJavassist PERFORMANCES\n");
+-        new JavassistPerfTest().perfs(args);
+-        double[][] javassistPerfs = perfs;
+-
+-        // prints results
+-        System.out.println("\nGLOBAL RESULTS");
+-        System.out.println("\nWITH DEBUG INFORMATION\n");
+-        for (int step = 0; step < 2; ++step) {
+-            for (mode = 0; mode < 4; ++mode) {
+-                switch (mode) {
+-                    case 0:
+-                        System.out.print("NO ADAPT:     ");
+-                        break;
+-                    case 1:
+-                        System.out.print("NULL ADAPT:   ");
+-                        break;
+-                    case 2:
+-                        System.out.print("COMPUTE MAXS: ");
+-                        break;
+-                    default:
+-                        System.out.print("ADD COUNTER:  ");
+-                        break;
+-                }
+-                System.out.print((float) asmPerfs[step][mode] + " ms");
+-                if (mode > 0) {
+-                    System.out.print(" (*");
+-                    System.out.print((float) (asmPerfs[step][mode] / asmPerfs[step][0]));
+-                    System.out.print(")");
+-                }
+-                System.out.print(" ");
+-                System.out.print((float) bcelPerfs[step][mode] + " ms");
+-                if (mode > 0) {
+-                    System.out.print(" (*");
+-                    System.out.print((float) (bcelPerfs[step][mode] / bcelPerfs[step][0]));
+-                    System.out.print(")");
+-                }
+-                System.out.print(" ");
+-                System.out.print((float) serpPerfs[step][mode] + " ms");
+-                if (mode > 0) {
+-                    System.out.print(" (*");
+-                    System.out.print((float) (serpPerfs[step][mode] / serpPerfs[step][0]));
+-                    System.out.print(")");
+-                }
+-                System.out.print(" ");
+-                System.out.print((float) javassistPerfs[step][mode] + " ms");
+-                if (mode > 0) {
+-                    System.out.print(" (*");
+-                    System.out.print((float) (javassistPerfs[step][mode] / javassistPerfs[step][0]));
+-                    System.out.print(")");
+-                }
+-                System.out.println();
+-            }
+-            if (step == 0) {
+-                System.out.println("\nWITHOUT DEBUG INFORMATION\n");
+-            }
+-        }
+-
+-        System.out.println("\nRELATIVE RESULTS");
+-        System.out.println("\nWITH DEBUG INFORMATION\n");
+-        for (int step = 0; step < 2; ++step) {
+-            System.err.println("[MEASURE      ASM       BCEL      SERP Javassist]");
+-            for (mode = 1; mode < 4; ++mode) {
+-                int base;
+-                switch (mode) {
+-                    case 1:
+-                        System.out.print("NULL ADAPT:   ");
+-                        base = 0;
+-                        break;
+-                    case 2:
+-                        System.out.print("COMPUTE MAXS: ");
+-                        base = 1;
+-                        break;
+-                    default:
+-                        System.out.print("ADD COUNTER:  ");
+-                        base = 1;
+-                        break;
+-                }
+-                double ref = asmPerfs[step][mode] - asmPerfs[step][base];
+-                System.out.print((float) ref + " ms ");
+-                double f = bcelPerfs[step][mode] - bcelPerfs[step][base];
+-                System.out.print((float) f + " ms (*");
+-                System.out.print((float) (f / ref));
+-                System.out.print(") ");
+-                double g = serpPerfs[step][mode] - serpPerfs[step][base];
+-                System.out.print((float) g + " ms (*");
+-                System.out.print((float) (g / ref));
+-                System.out.print(")");
+-                double h = javassistPerfs[step][mode]
+-                        - javassistPerfs[step][base];
+-                System.out.print((float) h + " ms (*");
+-                System.out.print((float) (h / ref));
+-                System.out.print(")");
+-                System.out.println();
+-            }
+-            if (step == 0) {
+-                System.out.println("\nWITHOUT DEBUG INFORMATION\n");
+-            }
+-        }
+-    }
+-
+-    void perfs(final String[] args) throws Exception {
+-        // prepares zip files, if necessary
+-        if (!(new File(args[0] + "classes1.zip").exists())) {
+-            System.out.println("Preparing zip files from " + args[1] + "...");
+-            for (int step = 0; step < 2; ++step) {
+-                dst = new ZipOutputStream(new FileOutputStream(args[0]
+-                        + "classes" + (step + 1) + ".zip"));
+-                mode = step == 0 ? 1 : 4;
+-                for (int i = 1; i < args.length; ++i) {
+-                    ALLPerfTest loader = newInstance();
+-                    zip = new ZipFile(args[i]);
+-                    Enumeration entries = zip.entries();
+-                    while (entries.hasMoreElements()) {
+-                        String s = ((ZipEntry) entries.nextElement()).getName();
+-                        if (s.endsWith(".class")) {
+-                            s = s.substring(0, s.length() - 6)
+-                                    .replace('/', '.');
+-                            loader.loadClass(s);
+-                        }
+-                    }
+-                }
+-                dst.close();
+-                dst = null;
+-            }
+-            System.out.println();
+-        }
+-
+-        // measures performances
+-        perfs = new double[2][4];
+-        System.out.println("FIRST STEP: WITH DEBUG INFORMATION");
+-        for (int step = 0; step < 2; ++step) {
+-            zip = new ZipFile(args[0] + "classes" + (step + 1) + ".zip");
+-            for (mode = 0; mode < 4; ++mode) {
+-                for (int i = 0; i < 4; ++i) {
+-                    ALLPerfTest loader = newInstance();
+-                    total = 0;
+-                    totalSize = 0;
+-                    Enumeration entries = zip.entries();
+-                    double t = System.currentTimeMillis();
+-                    while (entries.hasMoreElements()) {
+-                        String s = ((ZipEntry) entries.nextElement()).getName();
+-                        if (s.endsWith(".class")) {
+-                            s = s.substring(0, s.length() - 6)
+-                                    .replace('/', '.');
+-                            loader.loadClass(s);
+-                        }
+-                    }
+-                    t = System.currentTimeMillis() - t;
+-                    if (i == 0) {
+-                        perfs[step][mode] = t;
+-                    } else {
+-                        perfs[step][mode] = Math.min(perfs[step][mode], t);
+-                    }
+-                    switch (mode) {
+-                        case 0:
+-                            System.out.print("NO ADAPT:     ");
+-                            break;
+-                        case 1:
+-                            System.out.print("NULL ADAPT:   ");
+-                            break;
+-                        case 2:
+-                            System.out.print("COMPUTE MAXS: ");
+-                            break;
+-                        default:
+-                            System.out.print("ADD COUNTER:  ");
+-                            break;
+-                    }
+-                    System.out.print((float) t + " ms ");
+-                    System.out.print("(" + total + " classes");
+-                    System.out.println(", " + totalSize + " bytes)");
+-                    loader = null;
+-                    gc();
+-                }
+-            }
+-            if (step == 0) {
+-                System.out.println("SECOND STEP: WITHOUT DEBUG INFORMATION");
+-            }
+-        }
+-
+-        // prints results
+-        System.out.println("\nRESULTS");
+-        System.out.println("\nWITH DEBUG INFORMATION\n");
+-        for (int step = 0; step < 2; ++step) {
+-            for (mode = 0; mode < 4; ++mode) {
+-                switch (mode) {
+-                    case 0:
+-                        System.out.print("NO ADAPT:     ");
+-                        break;
+-                    case 1:
+-                        System.out.print("NULL ADAPT:   ");
+-                        break;
+-                    case 2:
+-                        System.out.print("COMPUTE MAXS: ");
+-                        break;
+-                    default:
+-                        System.out.print("ADD COUNTER:  ");
+-                        break;
+-                }
+-                System.out.println((float) perfs[step][mode] + " ms");
+-            }
+-            if (step == 0) {
+-                System.out.println("\nWITHOUT DEBUG INFORMATION\n");
+-            }
+-        }
+-    }
+-
+-    private static byte[] readClass(final InputStream is) throws IOException {
+-        if (is == null) {
+-            throw new IOException("Class not found");
+-        }
+-        byte[] b = new byte[is.available()];
+-        int len = 0;
+-        while (true) {
+-            int n = is.read(b, len, b.length - len);
+-            if (n == -1) {
+-                if (len < b.length) {
+-                    byte[] c = new byte[len];
+-                    System.arraycopy(b, 0, c, 0, len);
+-                    b = c;
+-                }
+-                return b;
+-            } else {
+-                len += n;
+-                if (len == b.length) {
+-                    byte[] c = new byte[b.length + 1000];
+-                    System.arraycopy(b, 0, c, 0, len);
+-                    b = c;
+-                }
+-            }
+-        }
+-    }
+-
+-    protected Class findClass(final String name) throws ClassNotFoundException {
+-        try {
+-            byte[] b;
+-            String fileName = name.replace('.', '/') + ".class";
+-            InputStream is = zip.getInputStream(zip.getEntry(fileName));
+-            switch (mode) {
+-                case 0:
+-                    b = new byte[is.available()];
+-                    int len = 0;
+-                    while (true) {
+-                        int n = is.read(b, len, b.length - len);
+-                        if (n == -1) {
+-                            if (len < b.length) {
+-                                byte[] c = new byte[len];
+-                                System.arraycopy(b, 0, c, 0, len);
+-                                b = c;
+-                            }
+-                            break;
+-                        } else {
+-                            len += n;
+-                            if (len == b.length) {
+-                                byte[] c = new byte[b.length + 1000];
+-                                System.arraycopy(b, 0, c, 0, len);
+-                                b = c;
+-                            }
+-                        }
+-                    }
+-                    break;
+-                case 1:
+-                    compute = false;
+-                    skipDebug = false;
+-                    b = nullAdaptClass(is, name);
+-                    break;
+-                case 2:
+-                    compute = true;
+-                    skipDebug = false;
+-                    b = nullAdaptClass(is, name);
+-                    break;
+-                case 3:
+-                    b = counterAdaptClass(is, name);
+-                    break;
+-                // case 4:
+-                default:
+-                    compute = false;
+-                    skipDebug = true;
+-                    b = nullAdaptClass(is, name);
+-                    break;
+-            }
+-            if (dst != null) {
+-                dst.putNextEntry(new ZipEntry(fileName));
+-                dst.write(b, 0, b.length);
+-                dst.closeEntry();
+-            }
+-            total += 1;
+-            totalSize += b.length;
+-            return defineClass(name, b, 0, b.length);
+-        } catch (Exception e) {
+-            e.printStackTrace();
+-            throw new ClassNotFoundException(name);
+-        }
+-    }
+-
+-    private static void gc() {
+-        try {
+-            Runtime.getRuntime().gc();
+-            Thread.sleep(50);
+-            Runtime.getRuntime().gc();
+-            Thread.sleep(50);
+-            Runtime.getRuntime().gc();
+-            Thread.sleep(50);
+-        } catch (InterruptedException e) {
+-        }
+-    }
+-
+-    abstract ALLPerfTest newInstance();
+-
+-    abstract byte[] nullAdaptClass(final InputStream is, final String name)
+-            throws Exception;
+-
+-    abstract byte[] counterAdaptClass(final InputStream is, final String name)
+-            throws Exception;
+-}
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/ASMMemTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/ASMMemTest.java	2010-09-20 16:10:52.556277413 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,212 +0,0 @@
+-/***
+- * ASM performance test: measures the performances of asm package
+- * Copyright (c) 2002-2005 France Telecom
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm;
+-
+-import java.io.FileInputStream;
+-import java.io.FileNotFoundException;
+-import java.io.IOException;
+-import java.util.ArrayList;
+-import java.util.Iterator;
+-import java.util.LinkedList;
+-import java.util.List;
+-import java.util.jar.JarEntry;
+-import java.util.jar.JarInputStream;
+-
+-import org.objectweb.asm.ClassReader;
+-import org.objectweb.asm.tree.ClassNode;
+-import org.objectweb.asm.tree.MethodNode;
+-
+-/*
+- * Created on Nov 30, 2004 as part of ASMPerf by treffer
+- */
+-
+-/**
+- * Memory performances tests for tree package.
+- * 
+- * @author treffer
+- */
+-public class ASMMemTest {
+-
+-    public static void main(String[] args) {
+-        if (args.length < 2) {
+-            System.out.println("java ASMMemTest <jar-file> <number-of-classes>");
+-            System.exit(1);
+-        }
+-
+-        Runtime runtime = Runtime.getRuntime();
+-        memDown(runtime);
+-        System.out.println("Initial memory load: ".concat(memFormat(getUsedMem(runtime))));
+-
+-        LinkedList fileData = new LinkedList();
+-        int limit = Integer.parseInt(args[1]);
+-        try {
+-            long totalSize = 0;
+-            JarInputStream jar = new JarInputStream(new FileInputStream(args[0]));
+-            JarEntry entry = jar.getNextJarEntry();
+-            while ((fileData.size() < limit) && (entry != null)) {
+-                String name = entry.getName();
+-                if (name.endsWith(".class")) {
+-                    if (entry.getSize() != -1) {
+-                        int len = (int) entry.getSize();
+-                        byte[] data = new byte[len];
+-                        jar.read(data);
+-                        fileData.add(data);
+-                        totalSize += data.length;
+-                    } else {
+-                        System.err.println("No jar-entry size given... Unimplemented, jar file not supported");
+-                    }
+-                }
+-                entry = jar.getNextJarEntry();
+-            }
+-            System.out.println(memFormat(totalSize) + " class data, ~"
+-                    + memFormat(totalSize / limit) + " per class.");
+-        } catch (FileNotFoundException e) {
+-            e.printStackTrace();
+-        } catch (IOException e) {
+-            e.printStackTrace();
+-        }
+-
+-        ArrayList result = new ArrayList(fileData.size());
+-        long startmem;
+-
+-        for (int i = 0; i < 10; i++) {
+-            System.out.println("\n> Run ".concat(Integer.toString(i + 1)));
+-            Iterator files = fileData.iterator();
+-            result.clear();
+-            memDown(runtime);
+-            System.out.println("Empty memory load: ".concat(memFormat(startmem = getUsedMem(runtime))));
+-
+-            long time = -System.currentTimeMillis();
+-            while (files.hasNext()) {
+-                byte data[] = (byte[]) files.next();
+-                ClassReader reader = new ClassReader(data);
+-                ClassNode clazz = new ClassNode();
+-                reader.accept(clazz, false);
+-                result.add(clazz);
+-            }
+-            time += System.currentTimeMillis();
+-
+-            memDown(runtime);
+-            System.out.println("Time: ".concat(timeFormat(time)));
+-            System.out.println("Final memory load: ".concat(memFormat(getUsedMem(runtime))));
+-            System.out.println("ASM memory load: ".concat(memFormat(getUsedMem(runtime)
+-                    - startmem)));
+-            for (int j = 0; j < limit; j++) {
+-                ClassNode clazz = (ClassNode) result.get(j);
+-                List l = clazz.methods;
+-                for (int k = 0, lim = l.size(); k < lim; k++) {
+-                    MethodNode m = (MethodNode) l.get(k);
+-                    List insn = m.instructions;
+-                    if (insn != null)
+-                        insn.clear();
+-                    /*
+-                     * for (int ins = 0, insmax = insn.size(); ins < insmax;
+-                     * ins++) { if (insn.get(ins) instanceof VarInsnNode) {
+-                     * insn.set(ins, null); } }
+-                     */
+-                }
+-            }
+-            memDown(runtime);
+-            System.out.println("ASM memory load (removed method code): ".concat(memFormat(getUsedMem(runtime)
+-                    - startmem)));
+-        }
+-
+-    }
+-
+-    public final static long getUsedMem(final Runtime r) {
+-        return r.totalMemory() - r.freeMemory();
+-    }
+-
+-    public final static String timeFormat(final long time) {
+-        int min = (int) (time / (60 * 1000));
+-        int sec = (int) ((time / (1000)) % 60);
+-        int msec = (int) (time % 1000);
+-        StringBuffer sbuf = new StringBuffer(30);
+-        if (min > 0) {
+-            sbuf.append(min);
+-            sbuf.append("min ");
+-        }
+-        if ((sec > 0) || (min > 0)) {
+-            sbuf.append(sec);
+-            sbuf.append("s ");
+-        }
+-        if ((msec > 0) || (sec > 0) || (min > 0)) {
+-            sbuf.append(msec);
+-            sbuf.append("ms ");
+-        }
+-        sbuf.append("(");
+-        sbuf.append(time);
+-        sbuf.append("ms)");
+-        return sbuf.toString();
+-    }
+-
+-    public final static String memFormat(final long mem) {
+-        int gb = (int) ((mem >> 30) & 0x3FF);
+-        int mb = (int) ((mem >> 20) & 0x3FF);
+-        int kb = (int) ((mem >> 10) & 0x3FF);
+-        int bytes = (int) (mem & 0x3FF);
+-        StringBuffer sbuf = new StringBuffer(30);
+-        if (gb > 0) {
+-            sbuf.append(gb);
+-            sbuf.append("GB ");
+-        }
+-        if ((mb > 0) || (gb > 0)) {
+-            sbuf.append(mb);
+-            sbuf.append("MB ");
+-        }
+-        if ((kb > 0) || (mb > 0) || (gb > 0)) {
+-            sbuf.append(kb);
+-            sbuf.append("KB ");
+-        }
+-        if ((bytes > 0) || (kb > 0) || (mb > 0) || (gb > 0)) {
+-            sbuf.append(bytes);
+-            sbuf.append("bytes ");
+-        }
+-        sbuf.append("(");
+-        sbuf.append(mem);
+-        sbuf.append("bytes)");
+-        return sbuf.toString();
+-    }
+-
+-    public final static void memDown(final Runtime r) {
+-        long oldmem;
+-        do {
+-            oldmem = getUsedMem(r);
+-            for (int i = 0; i < 10; i++) {
+-                // Calling System.gc once is very unsafe
+-                System.gc();
+-                try {
+-                    Thread.sleep(10);
+-                } catch (InterruptedException ie) {
+-                }
+-            }
+-        } while (getUsedMem(r) < oldmem);
+-    }
+-}
+\ No newline at end of file
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/ASMPerfTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/ASMPerfTest.java	2010-09-20 16:10:52.576275437 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,138 +0,0 @@
+-/***
+- * ASM performance test: measures the performances of asm package
+- * Copyright (c) 2002-2005 France Telecom
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm;
+-
+-import org.objectweb.asm.ClassAdapter;
+-import org.objectweb.asm.ClassReader;
+-import org.objectweb.asm.ClassVisitor;
+-import org.objectweb.asm.ClassWriter;
+-import org.objectweb.asm.MethodAdapter;
+-import org.objectweb.asm.MethodVisitor;
+-import org.objectweb.asm.Opcodes;
+-
+-import java.io.InputStream;
+-
+-/**
+- * @author Eric Bruneton
+- */
+-public class ASMPerfTest extends ALLPerfTest {
+-
+-    final static Integer ONE = new Integer(1);
+-
+-    public static void main(final String args[]) throws Exception {
+-        System.out.println("ASM PERFORMANCES\n");
+-        new ASMPerfTest().perfs(args);
+-    }
+-
+-    ALLPerfTest newInstance() {
+-        return new ASMPerfTest();
+-    }
+-
+-    byte[] nullAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        ClassReader cr = new ClassReader(is);
+-        ClassWriter cw = new ClassWriter(compute);
+-        ClassAdapter ca = new ClassAdapter(cw);
+-        cr.accept(ca, skipDebug);
+-        return cw.toByteArray();
+-    }
+-
+-    byte[] counterAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        ClassReader cr = new ClassReader(is);
+-        ClassWriter cw = new ClassWriter(false);
+-        ClassAdapter ca = new CounterClassAdapter(cw);
+-        cr.accept(ca, false);
+-        return cw.toByteArray();
+-    }
+-
+-    static class CounterClassAdapter extends ClassAdapter implements Opcodes {
+-
+-        private String owner;
+-
+-        CounterClassAdapter(ClassVisitor cv) {
+-            super(cv);
+-        }
+-
+-        public void visit(
+-            int version,
+-            int access,
+-            String name,
+-            String signature,
+-            String superName,
+-            String[] interfaces)
+-        {
+-            super.visit(version, access, name, signature, superName, interfaces);
+-            if ((access & ACC_INTERFACE) == 0) {
+-                cv.visitField(ACC_PUBLIC, "_counter", "I", null, null);
+-            }
+-            owner = name;
+-        }
+-
+-        public MethodVisitor visitMethod(
+-            int access,
+-            String name,
+-            String desc,
+-            String signature,
+-            String[] exceptions)
+-        {
+-            MethodVisitor mv = super.visitMethod(access,
+-                    name,
+-                    desc,
+-                    signature,
+-                    exceptions);
+-            if (!name.equals("<init>")
+-                    && (access & (ACC_STATIC | ACC_NATIVE | ACC_ABSTRACT)) == 0)
+-            {
+-                return new CounterMethodAdapter(mv, owner);
+-            }
+-            return mv;
+-        }
+-    }
+-
+-    static class CounterMethodAdapter extends MethodAdapter implements Opcodes {
+-
+-        CounterMethodAdapter(MethodVisitor mv, String owner) {
+-            super(mv);
+-            mv.visitVarInsn(ALOAD, 0);
+-            mv.visitVarInsn(ALOAD, 0);
+-            mv.visitFieldInsn(GETFIELD, owner, "_counter", "I");
+-            mv.visitLdcInsn(ONE);
+-            mv.visitInsn(IADD);
+-            mv.visitFieldInsn(PUTFIELD, owner, "_counter", "I");
+-        }
+-
+-        public void visitMaxs(int maxStack, int maxLocals) {
+-            super.visitMaxs(Math.max(maxStack, 2), maxLocals);
+-        }
+-    }
+-}
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/BCELPerfTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/BCELPerfTest.java	2010-09-20 16:10:52.523806126 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,142 +0,0 @@
+-/***
+- * ASM performance test: measures the performances of asm package
+- * Copyright (c) 2002-2005 France Telecom
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm;
+-
+-import org.apache.bcel.Constants;
+-import org.apache.bcel.classfile.ClassParser;
+-import org.apache.bcel.classfile.JavaClass;
+-import org.apache.bcel.classfile.Method;
+-import org.apache.bcel.generic.ALOAD;
+-import org.apache.bcel.generic.ClassGen;
+-import org.apache.bcel.generic.ConstantPoolGen;
+-import org.apache.bcel.generic.FieldGen;
+-import org.apache.bcel.generic.GETFIELD;
+-import org.apache.bcel.generic.IADD;
+-import org.apache.bcel.generic.ICONST;
+-import org.apache.bcel.generic.InstructionHandle;
+-import org.apache.bcel.generic.InstructionList;
+-import org.apache.bcel.generic.MethodGen;
+-import org.apache.bcel.generic.PUTFIELD;
+-import org.apache.bcel.generic.Type;
+-
+-import java.io.InputStream;
+-
+-/**
+- * @author Eric Bruneton
+- */
+-public class BCELPerfTest extends ALLPerfTest implements Constants {
+-
+-    public static void main(final String args[]) throws Exception {
+-        System.out.println("BCEL PERFORMANCES\n");
+-        new BCELPerfTest().perfs(args);
+-    }
+-
+-    ALLPerfTest newInstance() {
+-        return new BCELPerfTest();
+-    }
+-
+-    byte[] nullAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        JavaClass jc = new ClassParser(is, name + ".class").parse();
+-        ClassGen cg = new ClassGen(jc);
+-        ConstantPoolGen cp = cg.getConstantPool();
+-        Method[] ms = cg.getMethods();
+-        for (int j = 0; j < ms.length; ++j) {
+-            MethodGen mg = new MethodGen(ms[j], cg.getClassName(), cp);
+-            boolean lv = ms[j].getLocalVariableTable() == null;
+-            boolean ln = ms[j].getLineNumberTable() == null;
+-            if (lv) {
+-                mg.removeLocalVariables();
+-            }
+-            if (ln) {
+-                mg.removeLineNumbers();
+-            }
+-            mg.stripAttributes(skipDebug);
+-            InstructionList il = mg.getInstructionList();
+-            if (il != null) {
+-                InstructionHandle ih = il.getStart();
+-                while (ih != null) {
+-                    ih = ih.getNext();
+-                }
+-                if (compute) {
+-                    mg.setMaxStack();
+-                    mg.setMaxLocals();
+-                }
+-            }
+-            cg.replaceMethod(ms[j], mg.getMethod());
+-        }
+-        return cg.getJavaClass().getBytes();
+-    }
+-
+-    byte[] counterAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        JavaClass jc = new ClassParser(is, name + ".class").parse();
+-        ClassGen cg = new ClassGen(jc);
+-        ConstantPoolGen cp = cg.getConstantPool();
+-        if (!cg.isInterface()) {
+-            FieldGen fg = new FieldGen(ACC_PUBLIC,
+-                    Type.getType("I"),
+-                    "_counter",
+-                    cp);
+-            cg.addField(fg.getField());
+-        }
+-        Method[] ms = cg.getMethods();
+-        for (int j = 0; j < ms.length; ++j) {
+-            MethodGen mg = new MethodGen(ms[j], cg.getClassName(), cp);
+-            if (!mg.getName().equals("<init>") && !mg.isStatic()
+-                    && !mg.isAbstract() && !mg.isNative())
+-            {
+-                if (mg.getInstructionList() != null) {
+-                    InstructionList il = new InstructionList();
+-                    il.append(new ALOAD(0));
+-                    il.append(new ALOAD(0));
+-                    il.append(new GETFIELD(cp.addFieldref(name, "_counter", "I")));
+-                    il.append(new ICONST(1));
+-                    il.append(new IADD());
+-                    il.append(new PUTFIELD(cp.addFieldref(name, "_counter", "I")));
+-                    mg.getInstructionList().insert(il);
+-                    mg.setMaxStack(Math.max(mg.getMaxStack(), 2));
+-                    boolean lv = ms[j].getLocalVariableTable() == null;
+-                    boolean ln = ms[j].getLineNumberTable() == null;
+-                    if (lv) {
+-                        mg.removeLocalVariables();
+-                    }
+-                    if (ln) {
+-                        mg.removeLineNumbers();
+-                    }
+-                    cg.replaceMethod(ms[j], mg.getMethod());
+-                }
+-            }
+-        }
+-        return cg.getJavaClass().getBytes();
+-    }
+-}
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/JavassistPerfTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/JavassistPerfTest.java	2010-09-20 16:10:52.566278551 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,112 +0,0 @@
+-/***
+- * ASM performance test: measures the performances of asm package
+- * Copyright (c) 2002-2005 France Telecom
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm;
+-
+-import java.io.InputStream;
+-import java.lang.reflect.Modifier;
+-
+-import javassist.ClassPool;
+-import javassist.CtClass;
+-import javassist.CtField;
+-import javassist.CtMethod;
+-import javassist.bytecode.Bytecode;
+-import javassist.bytecode.CodeIterator;
+-import javassist.bytecode.MethodInfo;
+-import javassist.bytecode.Opcode;
+-
+-/**
+- * @author Eric Bruneton
+- */
+-public class JavassistPerfTest extends ALLPerfTest {
+-
+-    public static void main(final String args[]) throws Exception {
+-        System.out.println("Javassist PERFORMANCES\n");
+-        new JavassistPerfTest().perfs(args);
+-    }
+-
+-    ClassPool pool;
+-
+-    public JavassistPerfTest() {
+-        pool = new ClassPool(null);
+-    }
+-
+-    ALLPerfTest newInstance() {
+-        return new JavassistPerfTest();
+-    }
+-
+-    byte[] nullAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        CtClass cc = pool.makeClass(is);
+-        CtMethod[] ms = cc.getDeclaredMethods();
+-        for (int j = 0; j < ms.length; ++j) {
+-            if (skipDebug) {
+-                // is there a mean to remove the debug attributes?
+-            }
+-            if (compute) {
+-                // how to force recomputation of maxStack and maxLocals?
+-            }
+-        }
+-        return cc.toBytecode();
+-    }
+-
+-    byte[] counterAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        CtClass cc = pool.makeClass(is);
+-        if (!cc.isInterface()) {
+-            cc.addField(new CtField(CtClass.intType, "_counter", cc));
+-        }
+-        CtMethod[] ms = cc.getDeclaredMethods();
+-        for (int j = 0; j < ms.length; ++j) {
+-            CtMethod m = ms[j];
+-            int modifiers = m.getModifiers();
+-            if (!Modifier.isStatic(modifiers)
+-                    && !Modifier.isAbstract(modifiers)
+-                    && !Modifier.isNative(modifiers))
+-            {
+-                if (!m.isEmpty()) {
+-                    MethodInfo info = m.getMethodInfo();
+-                    Bytecode bc = new Bytecode(info.getConstPool(), 1, 0);
+-                    bc.addAload(0);
+-                    bc.addAload(0);
+-                    bc.addGetfield(cc, "_counter", "I");
+-                    bc.add(Opcode.ICONST_1);
+-                    bc.add(Opcode.IADD);
+-                    bc.addPutfield(cc, "_counter", "I");
+-                    CodeIterator iter = info.getCodeAttribute().iterator();
+-                    iter.begin();
+-                    iter.insert(bc.get());
+-                }
+-            }
+-        }
+-        return cc.toBytecode();
+-    }
+-}
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/SERPPerfTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/SERPPerfTest.java	2010-09-20 16:10:52.545534850 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,112 +0,0 @@
+-/***
+- * ASM performance test: measures the performances of asm package
+- * Copyright (c) 2002-2005 France Telecom
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm;
+-
+-import serp.bytecode.BCClass;
+-import serp.bytecode.BCMethod;
+-import serp.bytecode.Code;
+-import serp.bytecode.Project;
+-
+-import java.io.InputStream;
+-
+-/**
+- * @author Eric Bruneton
+- */
+-public class SERPPerfTest extends ALLPerfTest {
+-
+-    private static Project p = new Project();
+-
+-    private static BCClass c;
+-
+-    public static void main(final String args[]) throws Exception {
+-        System.out.println("SERP PERFORMANCES\n");
+-        new SERPPerfTest().perfs(args);
+-    }
+-
+-    ALLPerfTest newInstance() {
+-        return new SERPPerfTest();
+-    }
+-
+-    byte[] nullAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        if (c != null) {
+-            p.removeClass(c);
+-        }
+-        c = p.loadClass(is);
+-        c.getDeclaredFields();
+-        BCMethod[] methods = c.getDeclaredMethods();
+-        for (int i = 0; i < methods.length; ++i) {
+-            Code code = methods[i].getCode(false);
+-            if (code != null) {
+-                while (code.hasNext()) {
+-                    code.next();
+-                }
+-                if (compute) {
+-                    code.calculateMaxStack();
+-                    code.calculateMaxLocals();
+-                }
+-            }
+-        }
+-        return c.toByteArray();
+-    }
+-
+-    byte[] counterAdaptClass(final InputStream is, final String name)
+-            throws Exception
+-    {
+-        if (c != null) {
+-            p.removeClass(c);
+-        }
+-        c = p.loadClass(is);
+-        c.getDeclaredFields();
+-        if (!c.isInterface()) {
+-            c.declareField("_counter", "I");
+-        }
+-        BCMethod[] methods = c.getDeclaredMethods();
+-        for (int i = 0; i < methods.length; ++i) {
+-            BCMethod m = methods[i];
+-            if (!m.getName().equals("<init>") && !m.isStatic()
+-                    && !m.isAbstract() && !m.isNative())
+-            {
+-                Code code = m.getCode(false);
+-                if (code != null) {
+-                    code.aload().setLocal(0);
+-                    code.aload().setLocal(0);
+-                    code.getfield().setField(name, "_counter", "I");
+-                    code.constant().setValue(1);
+-                    code.iadd();
+-                    code.putfield().setField(name, "_counter", "I");
+-                    code.setMaxStack(Math.max(code.getMaxStack(), 2));
+-                }
+-            }
+-        }
+-        return c.toByteArray();
+-    }
+-}
+Index: asm2.fix-452900/test/perf/org/objectweb/asm/xml/XMLPerfTest.java
+===================================================================
+--- asm2.fix-452900.orig/test/perf/org/objectweb/asm/xml/XMLPerfTest.java	2010-09-20 16:10:52.536276135 +0100
++++ /dev/null	1970-01-01 00:00:00.000000000 +0000
+@@ -1,199 +0,0 @@
+-/***
+- * ASM XML Adapter
+- * Copyright (c) 2004, Eugene Kuleshov
+- * All rights reserved.
+- *
+- * Redistribution and use in source and binary forms, with or without
+- * modification, are permitted provided that the following conditions
+- * are met:
+- * 1. Redistributions of source code must retain the above copyright
+- *    notice, this list of conditions and the following disclaimer.
+- * 2. Redistributions in binary form must reproduce the above copyright
+- *    notice, this list of conditions and the following disclaimer in the
+- *    documentation and/or other materials provided with the distribution.
+- * 3. Neither the name of the copyright holders nor the names of its
+- *    contributors may be used to endorse or promote products derived from
+- *    this software without specific prior written permission.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+- * THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-package org.objectweb.asm.xml;
+-
+-import java.io.BufferedInputStream;
+-import java.io.File;
+-import java.io.FileInputStream;
+-import java.io.IOException;
+-import java.io.InputStream;
+-import java.io.OutputStream;
+-import java.net.URL;
+-
+-import javax.xml.transform.Source;
+-import javax.xml.transform.stream.StreamSource;
+-
+-/**
+- * Performance test suite for ASM XML
+- * 
+- * @author Eugene Kuleshov
+- */
+-public class XMLPerfTest {
+-
+-    private static final String[] ENGINES = {
+-        "jd.xml.xslt.trax.TransformerFactoryImpl",
+-        "net.sf.saxon.TransformerFactoryImpl",
+-        "org.apache.xalan.processor.TransformerFactoryImpl", };
+-
+-    private static final String[] TEMPLATES = {
+-        "copy.xsl",
+-        "linenumbers.xsl",
+-        "profile.xsl", };
+-
+-    public static void main(String[] args) throws Exception {
+-        System.err.println("Comparing XSLT performance for ASM XSLT");
+-        System.err.println("This may take 20 to 30 minutes\n");
+-
+-        File examplesDir = new File(args[0]);
+-        if (!examplesDir.isDirectory()) {
+-            System.err.println(args[0] + " must be directory");
+-            return;
+-        }
+-
+-        // File[] templates = examplesDir.listFiles(new FilenameFilter() {
+-        // public boolean accept(File dir, String name) {
+-        // return name.endsWith(".xsl");
+-        // }
+-        // });
+-
+-        for (int i = 0; i < ENGINES.length; i++) {
+-            System.err.println(ENGINES[i]);
+-            process(null, ENGINES[i]);
+-            for (int j = 0; j < TEMPLATES.length; j++) {
+-                process(new File(examplesDir, TEMPLATES[j]).getAbsolutePath(),
+-                        ENGINES[i]);
+-            }
+-            System.err.println();
+-        }
+-
+-    }
+-
+-    private static void process(String name, String engine) throws Exception {
+-        System.setProperty("javax.xml.transform.TransformerFactory", engine);
+-        processRep(name, Processor.BYTECODE);
+-        processRep(name, Processor.MULTI_XML);
+-        processRep(name, Processor.SINGLE_XML);
+-    }
+-
+-    // private static void processEntry(
+-    // String className,
+-    // TransformerHandler handler) throws Exception
+-    // {
+-    // byte[] classData = getCode(new URL(className).openStream());
+-    // ByteArrayOutputStream bos = new ByteArrayOutputStream();
+-    //
+-    // handler.setResult(new SAXResult(new ASMContentHandler(bos, false)));
+-    //
+-    // ClassReader cr = new ClassReader(classData);
+-    // cr.accept(new SAXClassAdapter(handler, cr.getVersion(), false), false);
+-    // }
+-    //
+-    // private static byte[] getCode(InputStream is) throws IOException {
+-    // ByteArrayOutputStream bos = new ByteArrayOutputStream();
+-    // byte[] buff = new byte[1024];
+-    // int n = -1;
+-    // while ((n = is.read(buff)) > -1)
+-    // bos.write(buff, 0, n);
+-    // return bos.toByteArray();
+-    // }
+-
+-    private static void processRep(String name, int outRep) {
+-        long l1 = System.currentTimeMillis();
+-        int n = 0;
+-        try {
+-            Class c = XMLPerfTest.class;
+-            String u = c.getResource("/java/lang/String.class").toString();
+-            final InputStream is = new BufferedInputStream(new URL(u.substring(4,
+-                    u.indexOf('!'))).openStream());
+-            final OutputStream os = new IgnoringOutputStream();
+-            final StreamSource xslt = name == null
+-                    ? null
+-                    : new StreamSource(new FileInputStream(name));
+-
+-            Processor p = new DotObserver(Processor.BYTECODE,
+-                    outRep,
+-                    is,
+-                    os,
+-                    xslt);
+-            n = p.process();
+-
+-        } catch (Exception ex) {
+-            System.err.println();
+-            // ex.printStackTrace();
+-            System.err.println(ex);
+-
+-        }
+-
+-        long l2 = System.currentTimeMillis();
+-
+-        System.err.println();
+-        System.err.println("  " + outRep + " " + name + "  " + (l2 - l1)
+-                + "ms  " + (1000f * n / (l2 - l1)));
+-
+-        // SAXTransformerFactory saxtf = (SAXTransformerFactory)
+-        // TransformerFactory.newInstance();
+-        // Templates templates = saxtf.newTemplates(xslt);
+-        //
+-        // ZipEntry ze = null;
+-        // int max = 10000;
+-        // while ((ze = zis.getNextEntry()) != null && max > 0) {
+-        // if (ze.getName().endsWith(".class")) {
+-        // processEntry(u.substring(0, n + 2).concat(ze.getName()),
+-        // saxtf.newTransformerHandler(templates));
+-        // max--;
+-        // }
+-        // }
+-    }
+-
+-    private static final class DotObserver extends Processor {
+-        private int n = 0;
+-
+-        public DotObserver(
+-            int inRepresenation,
+-            int outRepresentation,
+-            InputStream input,
+-            OutputStream output,
+-            Source xslt)
+-        {
+-            super(inRepresenation, outRepresentation, input, output, xslt);
+-        }
+-
+-        public void update(Object arg) {
+-            n++;
+-            if ((n % 1000) == 0) {
+-                System.err.print("" + (n / 1000));
+-            } else if ((n % 100) == 0) {
+-                System.err.print(".");
+-            }
+-        }
+-    }
+-
+-    private static final class IgnoringOutputStream extends OutputStream {
+-
+-        public final void write(int b) throws IOException {
+-        }
+-
+-        public final void write(byte[] b) throws IOException {
+-        }
+-
+-        public final void write(byte[] b, int off, int len) throws IOException {
+-        }
+-    }
+-}

=== modified file 'debian/rules'
--- debian/rules	2009-08-09 10:00:50 +0000
+++ debian/rules	2011-02-10 11:38:40 +0000
@@ -7,8 +7,10 @@
 PACKAGE              := $(DEB_SOURCE_PACKAGE)
 VERSION              := $(DEB_UPSTREAM_VERSION)
 JAVA_HOME            := /usr/lib/jvm/default-java
-DEB_JARS             := gnujaxp ant-junit junit xalan2 ow_util_ant_tasks
+DEB_JARS             := gnujaxp ant-junit junit xalan2 ow_util_ant_tasks janino commons-lang.jar
 DEB_ANT_BUILD_TARGET := dist
+DEB_ANT_CHECK_TARGET := test
+DEB_ANT_ARGS         := -Dasm.test=/usr/share/java/commons-lang.jar
 
 install/libasm2-java::
 	mh_installpoms -plib$(PACKAGE)-java

=== added directory 'debian/source'
=== added file 'debian/source/format'
--- debian/source/format	1970-01-01 00:00:00 +0000
+++ debian/source/format	2011-02-10 11:38:40 +0000
@@ -0,0 +1 @@
+3.0 (quilt)



More information about the pkg-java-maintainers mailing list