Krakatau bug fix
This commit is contained in:
parent
870987f65f
commit
bd0938476c
10 changed files with 3 additions and 916 deletions
|
@ -1,48 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM: a very small and fast Java bytecode manipulation framework
|
||||
* Copyright (c) 2000-2011 INRIA, 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.
|
||||
-->
|
||||
<body>
|
||||
Provides some useful class and method adapters. <i>The preferred way of using
|
||||
these adapters is by chaining them together and to custom adapters (instead of
|
||||
inheriting from them)</i>. Indeed this approach provides more combination
|
||||
possibilities than inheritance. For instance, suppose you want to implement an
|
||||
adapter MyAdapter than needs sorted local variables and intermediate stack map
|
||||
frame values taking into account the local variables sort. By using inheritance,
|
||||
this would require MyAdapter to extend AnalyzerAdapter, itself extending
|
||||
LocalVariablesSorter. But AnalyzerAdapter is not a subclass of
|
||||
LocalVariablesSorter, so this is not possible. On the contrary, by using
|
||||
delegation, you can make LocalVariablesSorter delegate to AnalyzerAdapter,
|
||||
itself delegating to MyAdapter. In this case AnalyzerAdapter computes
|
||||
intermediate frames based on the output of LocalVariablesSorter, and MyAdapter
|
||||
can add new locals by calling the newLocal method on LocalVariablesSorter, and
|
||||
can get the stack map frame state before each instruction by reading the locals
|
||||
and stack fields in AnalyzerAdapter (this requires references from MyAdapter
|
||||
back to LocalVariablesSorter and AnalyzerAdapter).
|
||||
</body>
|
|
@ -1,87 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM: a very small and fast Java bytecode manipulation framework
|
||||
* Copyright (c) 2000-2011 INRIA, 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.
|
||||
-->
|
||||
<body>
|
||||
Provides a small and fast bytecode manipulation framework.
|
||||
|
||||
<p>
|
||||
The <a href="http://www.objectweb.org/asm">ASM</a> framework is organized
|
||||
around the {@link org.objectweb.asm.ClassVisitor ClassVisitor},
|
||||
{@link org.objectweb.asm.FieldVisitor FieldVisitor},
|
||||
{@link org.objectweb.asm.MethodVisitor MethodVisitor} and
|
||||
{@link org.objectweb.asm.AnnotationVisitor AnnotationVisitor} abstract classes,
|
||||
which allow one to visit the fields, methods and annotations of a class,
|
||||
including the bytecode instructions of each method.
|
||||
|
||||
<p>
|
||||
In addition to these main abstract classes, ASM provides a {@link
|
||||
org.objectweb.asm.ClassReader ClassReader} class, that can parse an
|
||||
existing class and make a given visitor visit it. ASM also provides
|
||||
a {@link org.objectweb.asm.ClassWriter ClassWriter} class, which is
|
||||
a visitor that generates Java class files.
|
||||
|
||||
<p>
|
||||
In order to generate a class from scratch, only the {@link
|
||||
org.objectweb.asm.ClassWriter ClassWriter} class is necessary. Indeed,
|
||||
in order to generate a class, one must just call its visit<i>Xxx</i>
|
||||
methods with the appropriate arguments to generate the desired fields
|
||||
and methods. See the "helloworld" example in the ASM distribution for
|
||||
more details about class generation.
|
||||
|
||||
<p>
|
||||
In order to modify existing classes, one must use a {@link
|
||||
org.objectweb.asm.ClassReader ClassReader} class to analyze
|
||||
the original class, a class modifier, and a {@link org.objectweb.asm.ClassWriter
|
||||
ClassWriter} to construct the modified class. The class modifier
|
||||
is just a {@link org.objectweb.asm.ClassVisitor ClassVisitor}
|
||||
that delegates most of the work to another {@link org.objectweb.asm.ClassVisitor
|
||||
ClassVisitor}, but that sometimes changes some parameter values,
|
||||
or call additional methods, in order to implement the desired
|
||||
modification process. In order to make it easier to implement such
|
||||
class modifiers, the {@link org.objectweb.asm.ClassVisitor
|
||||
ClassVisitor} and {@link org.objectweb.asm.MethodVisitor MethodVisitor}
|
||||
classes delegate by default all the method calls they receive to an
|
||||
optional visitor. See the "adapt" example in the ASM
|
||||
distribution for more details about class modification.
|
||||
|
||||
<p>
|
||||
The size of the core ASM library, <tt>asm.jar</tt>, is only 45KB, which is much
|
||||
smaller than the size of the
|
||||
<a href="http://jakarta.apache.org/bcel">BCEL</a> library (504KB), and than the
|
||||
size of the
|
||||
<a href="http://serp.sourceforge.net">SERP</a> library (150KB). ASM is also
|
||||
much faster than these tools. Indeed the overhead of a load time class
|
||||
transformation process is of the order of 60% with ASM, 700% or more with BCEL,
|
||||
and 1100% or more with SERP (see the <tt>test/perf</tt> directory in the ASM
|
||||
distribution)!
|
||||
|
||||
@since ASM 1.3
|
||||
</body>
|
||||
</html>
|
|
@ -1,36 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM: a very small and fast Java bytecode manipulation framework
|
||||
* Copyright (c) 2000-2011 INRIA, 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.
|
||||
-->
|
||||
<body>
|
||||
Provides support for type signatures.
|
||||
|
||||
@since ASM 2.0
|
||||
</body>
|
||||
</html>
|
|
@ -1,67 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM: a very small and fast Java bytecode manipulation framework
|
||||
* Copyright (c) 2000-2011 INRIA, 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.
|
||||
-->
|
||||
<body>
|
||||
|
||||
<p>
|
||||
Provides a framework for static code analysis based on the asm.tree package.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Basic usage:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
ClassReader cr = new ClassReader(bytecode);
|
||||
ClassNode cn = new ClassNode();
|
||||
cr.accept(cn, ClassReader.SKIP_DEBUG);
|
||||
|
||||
List methods = cn.methods;
|
||||
for (int i = 0; i < methods.size(); ++i) {
|
||||
MethodNode method = (MethodNode) methods.get(i);
|
||||
if (method.instructions.size() > 0) {
|
||||
Analyzer a = new Analyzer(new BasicInterpreter());
|
||||
a.analyze(cn.name, method);
|
||||
Frame[] frames = a.getFrames();
|
||||
// Elements of the frames arrray now contains info for each instruction
|
||||
// from the analyzed method. BasicInterpreter creates BasicValue, that
|
||||
// is using simplified type system that distinguishes the UNINITIALZED,
|
||||
// INT, FLOAT, LONG, DOUBLE, REFERENCE and RETURNADDRESS types.
|
||||
...
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@since ASM 1.4.3
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,192 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM: a very small and fast Java bytecode manipulation framework
|
||||
* Copyright (c) 2000-2011 INRIA, 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.
|
||||
-->
|
||||
<body>
|
||||
|
||||
<p>
|
||||
Provides an ASM visitor that constructs a tree representation of the
|
||||
classes it visits. This class adapter can be useful to implement "complex"
|
||||
class manipulation operations, i.e., operations that would be very hard to
|
||||
implement without using a tree representation (such as optimizing the number
|
||||
of local variables used by a method).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
However, this class adapter has a cost: it makes ASM bigger and slower. Indeed
|
||||
it requires more than twenty new classes, and multiplies the time needed to
|
||||
transform a class by almost two (it is almost two times faster to read, "modify"
|
||||
and write a class with a ClassVisitor than with a ClassNode). This is why
|
||||
this package is bundled in an optional <tt>asm-tree.jar</tt> library that
|
||||
is separated from (but requires) the <tt>asm.jar</tt> library, which contains
|
||||
the core ASM framework. This is also why <i><font color="red">it is recommended
|
||||
not to use this class adapter when it is possible</font></i>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The root class is the ClassNode, that can be created from existing bytecode. For example:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
ClassReader cr = new ClassReader(source);
|
||||
ClassNode cn = new ClassNode();
|
||||
cr.accept(cn, true);
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Now the content of ClassNode can be modified and then
|
||||
serialized back into bytecode:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
ClassWriter cw = new ClassWriter(true);
|
||||
cn.accept(cw);
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Using a simple ClassVisitor it is possible to create MethodNode instances per-method.
|
||||
In this example MethodNode is acting as a buffer that is flushed out at visitEnd() call:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
ClassReader cr = new ClassReader(source);
|
||||
ClassWriter cw = new ClassWriter();
|
||||
ClassVisitor cv = new ClassVisitor(cw) {
|
||||
public MethodVisitor visitMethod(int access, String name,
|
||||
String desc, String signature, String[] exceptions) {
|
||||
final MethodVisitor mv = super.visitMethod(access, name, desc, signature, exceptions);
|
||||
MethodNode mn = new MethodNode(access, name, desc, signature, exceptions) {
|
||||
public void visitEnd() {
|
||||
// transform or analyze method code using tree API
|
||||
accept(mv);
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
cr.accept(cv, true);
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Several strategies can be used to construct method code from scratch. The first
|
||||
option is to create a MethodNode, and then create XxxInsnNode instances and
|
||||
add them to the instructions list:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
MethodNode m = new MethodNode(...);
|
||||
m.instructions.add(new VarInsnNode(ALOAD, 0));
|
||||
...
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Alternatively, you can use the fact that MethodNode is a MethodVisitor, and use
|
||||
that to create the XxxInsnNode and add them to the instructions list through
|
||||
the standard MethodVisitor methods:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
MethodNode m = new MethodNode(...);
|
||||
m.visitVarInsn(ALOAD, 0);
|
||||
...
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
If you cannot generate all the instructions in sequential order, i.e. if you
|
||||
need to save some pointer in the instruction list and then insert instructions
|
||||
at that place after other instructions have been generated, you can use InsnList
|
||||
methods insert() and insertBefore() to insert instructions at a saved pointer.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
MethodNode m = new MethodNode(...);
|
||||
m.visitVarInsn(ALOAD, 0);
|
||||
AbstractInsnNode ptr = m.instructions.getLast();
|
||||
m.visitVarInsn(ALOAD, 1);
|
||||
// inserts an instruction between ALOAD 0 and ALOAD 1
|
||||
m.instructions.insert(ptr, new VarInsnNode(ALOAD, 0));
|
||||
...
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
If you need to insert instructions while iterating over an existing instruction
|
||||
list, you can also use several strategies. The first one is to use a
|
||||
ListIterator over the instruction list:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
ListIterator it = m.instructions.iterator();
|
||||
while (it.hasNext()) {
|
||||
AbstractInsnNode n = (AbstractInsnNode) it.next();
|
||||
if (...) {
|
||||
it.add(new VarInsnNode(ALOAD, 0));
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
It is also possible to convert an instruction list into an array and iterate trough
|
||||
array elements:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
AbstractInsnNode[] insns = m.instructions.toArray();
|
||||
for(int i = 0; i<insns.length; i++) {
|
||||
AbstractInsnNode n = insns[i];
|
||||
if (...) {
|
||||
m.instructions.insert(n, new VarInsnNode(ALOAD, 0));
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
If you want to insert these instructions through the MethodVisitor methods,
|
||||
you can use another instance of MethodNode as a MethodVisitor and then
|
||||
insert instructions collected by that instance into the instruction list.
|
||||
For example:
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
AbstractInsnNode[] insns = m.instructions.toArray();
|
||||
for(int i = 0; i<insns.length; i++) {
|
||||
AbstractInsnNode n = insns[i];
|
||||
if (...) {
|
||||
MethodNode mn = new MethodNode();
|
||||
mn.visitVarInsn(ALOAD, 0);
|
||||
mn.visitVarInsn(ALOAD, 1);
|
||||
m.instructions.insert(n, mn.instructions);
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@since ASM 1.3.3
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,40 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM: a very small and fast Java bytecode manipulation framework
|
||||
* Copyright (c) 2000-2011 INRIA, 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.
|
||||
-->
|
||||
<body>
|
||||
Provides ASM visitors that can be useful for programming and
|
||||
debugging purposes. These class visitors are normally not used by applications
|
||||
at runtime. This is why they are bundled in an optional <tt>asm-util.jar</tt>
|
||||
library that is separated from (but requires) the <tt>asm.jar</tt> library,
|
||||
which contains the core ASM framework.
|
||||
|
||||
@since ASM 1.3.2
|
||||
</body>
|
||||
</html>
|
|
@ -1,349 +0,0 @@
|
|||
<!--
|
||||
ASM XML Adapter
|
||||
Copyright (c) 2004-2011, 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.
|
||||
-->
|
||||
|
||||
<!--
|
||||
This DTD must be used to create XML documents to be processed by
|
||||
org.objectweb.asm.xml.ASMContentHandler
|
||||
-->
|
||||
|
||||
<!--
|
||||
Root element used to aggregate multiple classes into single document.
|
||||
-->
|
||||
<!ELEMENT classes ( class+ )>
|
||||
|
||||
<!--
|
||||
Root element for a single class.
|
||||
-->
|
||||
<!ELEMENT class ( interfaces, ( field | innerclass | method )*)>
|
||||
<!ATTLIST class access CDATA #REQUIRED>
|
||||
<!ATTLIST class name CDATA #REQUIRED>
|
||||
<!ATTLIST class parent CDATA #REQUIRED>
|
||||
<!ATTLIST class major CDATA #REQUIRED>
|
||||
<!ATTLIST class minor CDATA #REQUIRED>
|
||||
<!ATTLIST class source CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT interfaces ( interface* )>
|
||||
<!ELEMENT interface EMPTY>
|
||||
<!ATTLIST interface name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT field EMPTY>
|
||||
<!ATTLIST field access CDATA #REQUIRED>
|
||||
<!ATTLIST field desc CDATA #REQUIRED>
|
||||
<!ATTLIST field name CDATA #REQUIRED>
|
||||
<!--
|
||||
All characters out of interval 0x20 to 0x7f (inclusive) must
|
||||
be encoded (\uXXXX) and character '\' must be replaced by "\\"
|
||||
-->
|
||||
<!ATTLIST field value CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT innerclass EMPTY>
|
||||
<!ATTLIST innerclass access CDATA #REQUIRED>
|
||||
<!ATTLIST innerclass innerName CDATA #IMPLIED>
|
||||
<!ATTLIST innerclass name CDATA #REQUIRED>
|
||||
<!ATTLIST innerclass outerName CDATA #IMPLIED>
|
||||
|
||||
<!--
|
||||
Root element for method definition.
|
||||
-->
|
||||
<!ELEMENT method ( exceptions, code? )>
|
||||
<!ATTLIST method access CDATA #REQUIRED>
|
||||
<!ATTLIST method desc CDATA #REQUIRED>
|
||||
<!ATTLIST method name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT exceptions ( exception* )>
|
||||
<!ELEMENT exception EMPTY>
|
||||
<!ATTLIST exception name CDATA #REQUIRED>
|
||||
|
||||
<!--
|
||||
code element contains bytecode instructions and definitions for labels, line numbers, try/catch and max
|
||||
-->
|
||||
<!ELEMENT code (( AALOAD | AASTORE | ACONST_NULL | ALOAD | ANEWARRAY | ARETURN | ARRAYLENGTH | ASTORE | ATHROW | BALOAD | BASTORE | BIPUSH | CALOAD | CASTORE | CHECKCAST | D2F | D2I | D2L | DADD | DALOAD | DASTORE | DCMPG | DCMPL | DCONST_0 | DCONST_1 | DDIV | DLOAD | DMUL | DNEG | DREM | DRETURN | DSTORE | DSUB | DUP | DUP2 | DUP2_X1 | DUP2_X2 | DUP_X1 | DUP_X2 | SWAP | F2D | F2I | F2L | FADD | FALOAD | FASTORE | FCMPG | FCMPL | FCONST_0 | FCONST_1 | FCONST_2 | FDIV | FLOAD | FMUL | FNEG | FREM | FRETURN | FSTORE | FSUB | GETFIELD | GETSTATIC | GOTO | I2B | I2C | I2D | I2F | I2L | I2S | IADD | IALOAD | IAND | IASTORE | ICONST_0 | ICONST_1 | ICONST_2 | ICONST_3 | ICONST_4 | ICONST_5 | ICONST_M1 | IDIV | IFEQ | IFGE | IFGT | IFLE | IFLT | IFNE | IFNONNULL | IFNULL | IF_ACMPEQ | IF_ACMPNE | IF_ICMPEQ | IF_ICMPGE | IF_ICMPGT | IF_ICMPLE | IF_ICMPLT | IF_ICMPNE | IINC | ILOAD | IMUL | INEG | INSTANCEOF | INVOKEINTERFACE | INVOKESPECIAL | INVOKESTATIC | INVOKEVIRTUAL | IOR | IREM | IRETURN | ISHL | ISHR | ISTORE | ISUB | IUSHR | IXOR | JSR | L2D | L2F | L2I | LADD | LALOAD | LAND | LASTORE | LCMP | LCONST_0 | LCONST_1 | LDC | LDIV | LLOAD | LMUL | LNEG | LOOKUPSWITCH | LOR | LREM | LRETURN | LSHL | LSHR | LSTORE | LSUB | LUSHR | LXOR | MONITORENTER | MONITOREXIT | MULTIANEWARRAY | NEW | NEWARRAY | NOP | POP | POP2 | PUTFIELD | PUTSTATIC | RET | RETURN | SALOAD | SASTORE | SIPUSH | TABLESWITCH | Label | LineNumber | TryCatch )*, Max)>
|
||||
|
||||
<!ELEMENT Label EMPTY>
|
||||
<!ATTLIST Label name CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT TryCatch EMPTY>
|
||||
<!ATTLIST TryCatch end CDATA #REQUIRED>
|
||||
<!ATTLIST TryCatch handler CDATA #REQUIRED>
|
||||
<!ATTLIST TryCatch start CDATA #REQUIRED>
|
||||
<!ATTLIST TryCatch type CDATA #IMPLIED>
|
||||
|
||||
<!ELEMENT LineNumber EMPTY>
|
||||
<!ATTLIST LineNumber line CDATA #REQUIRED>
|
||||
<!ATTLIST LineNumber start CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT Max EMPTY>
|
||||
<!ATTLIST Max maxLocals CDATA #REQUIRED>
|
||||
<!ATTLIST Max maxStack CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT AALOAD EMPTY>
|
||||
<!ELEMENT AASTORE EMPTY>
|
||||
<!ELEMENT ACONST_NULL EMPTY>
|
||||
<!ELEMENT ALOAD EMPTY>
|
||||
<!ATTLIST ALOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT ANEWARRAY EMPTY>
|
||||
<!ATTLIST ANEWARRAY desc CDATA #REQUIRED>
|
||||
<!ELEMENT ARETURN EMPTY>
|
||||
<!ELEMENT ARRAYLENGTH EMPTY>
|
||||
<!ELEMENT ASTORE EMPTY>
|
||||
<!ATTLIST ASTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT ATHROW EMPTY>
|
||||
<!ELEMENT BALOAD EMPTY>
|
||||
<!ELEMENT BASTORE EMPTY>
|
||||
<!ELEMENT BIPUSH EMPTY>
|
||||
<!ATTLIST BIPUSH value CDATA #REQUIRED>
|
||||
<!ELEMENT CALOAD EMPTY>
|
||||
<!ELEMENT CASTORE EMPTY>
|
||||
<!ELEMENT CHECKCAST EMPTY>
|
||||
<!ATTLIST CHECKCAST desc CDATA #REQUIRED>
|
||||
<!ELEMENT D2F EMPTY>
|
||||
<!ELEMENT D2I EMPTY>
|
||||
<!ELEMENT D2L EMPTY>
|
||||
<!ELEMENT DADD EMPTY>
|
||||
<!ELEMENT DALOAD EMPTY>
|
||||
<!ELEMENT DASTORE EMPTY>
|
||||
<!ELEMENT DCMPG EMPTY>
|
||||
<!ELEMENT DCMPL EMPTY>
|
||||
<!ELEMENT DCONST_0 EMPTY>
|
||||
<!ELEMENT DCONST_1 EMPTY>
|
||||
<!ELEMENT DDIV EMPTY>
|
||||
<!ELEMENT DLOAD EMPTY>
|
||||
<!ATTLIST DLOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT DMUL EMPTY>
|
||||
<!ELEMENT DNEG EMPTY>
|
||||
<!ELEMENT DREM EMPTY>
|
||||
<!ELEMENT DRETURN EMPTY>
|
||||
<!ELEMENT DSTORE EMPTY>
|
||||
<!ATTLIST DSTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT DSUB EMPTY>
|
||||
<!ELEMENT DUP EMPTY>
|
||||
<!ELEMENT DUP2 EMPTY>
|
||||
<!ELEMENT DUP2_X1 EMPTY>
|
||||
<!ELEMENT DUP2_X2 EMPTY>
|
||||
<!ELEMENT DUP_X1 EMPTY>
|
||||
<!ELEMENT DUP_X2 EMPTY>
|
||||
<!ELEMENT SWAP EMPTY>
|
||||
<!ELEMENT F2D EMPTY>
|
||||
<!ELEMENT F2I EMPTY>
|
||||
<!ELEMENT F2L EMPTY>
|
||||
<!ELEMENT FADD EMPTY>
|
||||
<!ELEMENT FALOAD EMPTY>
|
||||
<!ELEMENT FASTORE EMPTY>
|
||||
<!ELEMENT FCMPG EMPTY>
|
||||
<!ELEMENT FCMPL EMPTY>
|
||||
<!ELEMENT FCONST_0 EMPTY>
|
||||
<!ELEMENT FCONST_1 EMPTY>
|
||||
<!ELEMENT FCONST_2 EMPTY>
|
||||
<!ELEMENT FDIV EMPTY>
|
||||
<!ELEMENT FLOAD EMPTY>
|
||||
<!ATTLIST FLOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT FMUL EMPTY>
|
||||
<!ELEMENT FNEG EMPTY>
|
||||
<!ELEMENT FREM EMPTY>
|
||||
<!ELEMENT FRETURN EMPTY>
|
||||
<!ELEMENT FSTORE EMPTY>
|
||||
<!ATTLIST FSTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT FSUB EMPTY>
|
||||
<!ELEMENT GETFIELD EMPTY>
|
||||
<!ATTLIST GETFIELD desc CDATA #REQUIRED>
|
||||
<!ATTLIST GETFIELD name CDATA #REQUIRED>
|
||||
<!ATTLIST GETFIELD owner CDATA #REQUIRED>
|
||||
<!ELEMENT GETSTATIC EMPTY>
|
||||
<!ATTLIST GETSTATIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST GETSTATIC name CDATA #REQUIRED>
|
||||
<!ATTLIST GETSTATIC owner CDATA #REQUIRED>
|
||||
<!ELEMENT GOTO EMPTY>
|
||||
<!ATTLIST GOTO label CDATA #REQUIRED>
|
||||
<!ELEMENT I2B EMPTY>
|
||||
<!ELEMENT I2C EMPTY>
|
||||
<!ELEMENT I2D EMPTY>
|
||||
<!ELEMENT I2F EMPTY>
|
||||
<!ELEMENT I2L EMPTY>
|
||||
<!ELEMENT I2S EMPTY>
|
||||
<!ELEMENT IADD EMPTY>
|
||||
<!ELEMENT IALOAD EMPTY>
|
||||
<!ELEMENT IAND EMPTY>
|
||||
<!ELEMENT IASTORE EMPTY>
|
||||
<!ELEMENT ICONST_0 EMPTY>
|
||||
<!ELEMENT ICONST_1 EMPTY>
|
||||
<!ELEMENT ICONST_2 EMPTY>
|
||||
<!ELEMENT ICONST_3 EMPTY>
|
||||
<!ELEMENT ICONST_4 EMPTY>
|
||||
<!ELEMENT ICONST_5 EMPTY>
|
||||
<!ELEMENT ICONST_M1 EMPTY>
|
||||
<!ELEMENT IDIV EMPTY>
|
||||
<!ELEMENT IFEQ EMPTY>
|
||||
<!ATTLIST IFEQ label CDATA #REQUIRED>
|
||||
<!ELEMENT IFGE EMPTY>
|
||||
<!ATTLIST IFGE label CDATA #REQUIRED>
|
||||
<!ELEMENT IFGT EMPTY>
|
||||
<!ATTLIST IFGT label CDATA #REQUIRED>
|
||||
<!ELEMENT IFLE EMPTY>
|
||||
<!ATTLIST IFLE label CDATA #REQUIRED>
|
||||
<!ELEMENT IFLT EMPTY>
|
||||
<!ATTLIST IFLT label CDATA #REQUIRED>
|
||||
<!ELEMENT IFNE EMPTY>
|
||||
<!ATTLIST IFNE label CDATA #REQUIRED>
|
||||
<!ELEMENT IFNONNULL EMPTY>
|
||||
<!ATTLIST IFNONNULL label CDATA #REQUIRED>
|
||||
<!ELEMENT IFNULL EMPTY>
|
||||
<!ATTLIST IFNULL label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ACMPEQ EMPTY>
|
||||
<!ATTLIST IF_ACMPEQ label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ACMPNE EMPTY>
|
||||
<!ATTLIST IF_ACMPNE label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPEQ EMPTY>
|
||||
<!ATTLIST IF_ICMPEQ label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPGE EMPTY>
|
||||
<!ATTLIST IF_ICMPGE label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPGT EMPTY>
|
||||
<!ATTLIST IF_ICMPGT label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPLE EMPTY>
|
||||
<!ATTLIST IF_ICMPLE label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPLT EMPTY>
|
||||
<!ATTLIST IF_ICMPLT label CDATA #REQUIRED>
|
||||
<!ELEMENT IF_ICMPNE EMPTY>
|
||||
<!ATTLIST IF_ICMPNE label CDATA #REQUIRED>
|
||||
<!ELEMENT IINC EMPTY>
|
||||
<!ATTLIST IINC inc CDATA #REQUIRED>
|
||||
<!ATTLIST IINC var CDATA #REQUIRED>
|
||||
<!ELEMENT ILOAD EMPTY>
|
||||
<!ATTLIST ILOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT IMUL EMPTY>
|
||||
<!ELEMENT INEG EMPTY>
|
||||
<!ELEMENT INSTANCEOF EMPTY>
|
||||
<!ATTLIST INSTANCEOF desc CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKEINTERFACE EMPTY>
|
||||
<!ATTLIST INVOKEINTERFACE desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEINTERFACE name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEINTERFACE owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKESPECIAL EMPTY>
|
||||
<!ATTLIST INVOKESPECIAL desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESPECIAL name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESPECIAL owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKESTATIC EMPTY>
|
||||
<!ATTLIST INVOKESTATIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESTATIC name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKESTATIC owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKEVIRTUAL EMPTY>
|
||||
<!ATTLIST INVOKEVIRTUAL desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEVIRTUAL name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEVIRTUAL owner CDATA #REQUIRED>
|
||||
<!ELEMENT INVOKEDYNAMIC ( bsmArgs+ )>
|
||||
<!ATTLIST INVOKEDYNAMIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEDYNAMIC name CDATA #REQUIRED>
|
||||
<!ATTLIST INVOKEDYNAMIC bsm CDATA #REQUIRED>
|
||||
<!ELEMENT bsmArgs EMPTY>
|
||||
<!ATTLIST bsmArgs cst CDATA #REQUIRED>
|
||||
<!ATTLIST bsmArgs desc CDATA #REQUIRED>
|
||||
<!ELEMENT IOR EMPTY>
|
||||
<!ELEMENT IREM EMPTY>
|
||||
<!ELEMENT IRETURN EMPTY>
|
||||
<!ELEMENT ISHL EMPTY>
|
||||
<!ELEMENT ISHR EMPTY>
|
||||
<!ELEMENT ISTORE EMPTY>
|
||||
<!ATTLIST ISTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT ISUB EMPTY>
|
||||
<!ELEMENT IUSHR EMPTY>
|
||||
<!ELEMENT IXOR EMPTY>
|
||||
<!ELEMENT JSR EMPTY>
|
||||
<!ATTLIST JSR label CDATA #REQUIRED>
|
||||
<!ELEMENT L2D EMPTY>
|
||||
<!ELEMENT L2F EMPTY>
|
||||
<!ELEMENT L2I EMPTY>
|
||||
<!ELEMENT LADD EMPTY>
|
||||
<!ELEMENT LALOAD EMPTY>
|
||||
<!ELEMENT LAND EMPTY>
|
||||
<!ELEMENT LASTORE EMPTY>
|
||||
<!ELEMENT LCMP EMPTY>
|
||||
<!ELEMENT LCONST_0 EMPTY>
|
||||
<!ELEMENT LCONST_1 EMPTY>
|
||||
<!ELEMENT LDC EMPTY>
|
||||
<!--
|
||||
All characters out of interval 0x20 to 0x7f (inclusive) must
|
||||
be encoded (\uXXXX) and character '\' must be replaced by "\\"
|
||||
-->
|
||||
<!ATTLIST LDC cst CDATA #REQUIRED>
|
||||
<!ATTLIST LDC desc CDATA #REQUIRED>
|
||||
<!ELEMENT LDIV EMPTY>
|
||||
<!ELEMENT LLOAD EMPTY>
|
||||
<!ATTLIST LLOAD var CDATA #REQUIRED>
|
||||
<!ELEMENT LMUL EMPTY>
|
||||
<!ELEMENT LNEG EMPTY>
|
||||
<!ELEMENT LOR EMPTY>
|
||||
<!ELEMENT LREM EMPTY>
|
||||
<!ELEMENT LRETURN EMPTY>
|
||||
<!ELEMENT LSHL EMPTY>
|
||||
<!ELEMENT LSHR EMPTY>
|
||||
<!ELEMENT LSTORE EMPTY>
|
||||
<!ATTLIST LSTORE var CDATA #REQUIRED>
|
||||
<!ELEMENT LSUB EMPTY>
|
||||
<!ELEMENT LUSHR EMPTY>
|
||||
<!ELEMENT LXOR EMPTY>
|
||||
<!ELEMENT MONITORENTER EMPTY>
|
||||
<!ELEMENT MONITOREXIT EMPTY>
|
||||
<!ELEMENT MULTIANEWARRAY EMPTY>
|
||||
<!ATTLIST MULTIANEWARRAY desc CDATA #REQUIRED>
|
||||
<!ATTLIST MULTIANEWARRAY dims CDATA #REQUIRED>
|
||||
<!ELEMENT NEW EMPTY>
|
||||
<!ATTLIST NEW desc CDATA #REQUIRED>
|
||||
<!ELEMENT NEWARRAY EMPTY>
|
||||
<!ATTLIST NEWARRAY value CDATA #REQUIRED>
|
||||
<!ELEMENT NOP EMPTY>
|
||||
<!ELEMENT POP EMPTY>
|
||||
<!ELEMENT POP2 EMPTY>
|
||||
<!ELEMENT PUTFIELD EMPTY>
|
||||
<!ATTLIST PUTFIELD desc CDATA #REQUIRED>
|
||||
<!ATTLIST PUTFIELD name CDATA #REQUIRED>
|
||||
<!ATTLIST PUTFIELD owner CDATA #REQUIRED>
|
||||
<!ELEMENT PUTSTATIC EMPTY>
|
||||
<!ATTLIST PUTSTATIC desc CDATA #REQUIRED>
|
||||
<!ATTLIST PUTSTATIC name CDATA #REQUIRED>
|
||||
<!ATTLIST PUTSTATIC owner CDATA #REQUIRED>
|
||||
<!ELEMENT RET EMPTY>
|
||||
<!ATTLIST RET var CDATA #REQUIRED>
|
||||
<!ELEMENT RETURN EMPTY>
|
||||
<!ELEMENT SALOAD EMPTY>
|
||||
<!ELEMENT SASTORE EMPTY>
|
||||
<!ELEMENT SIPUSH EMPTY>
|
||||
<!ATTLIST SIPUSH value CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT LOOKUPSWITCH ( label+ )>
|
||||
<!ATTLIST LOOKUPSWITCH dflt CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT TABLESWITCH ( label+ )>
|
||||
<!ATTLIST TABLESWITCH dflt CDATA #REQUIRED>
|
||||
<!ATTLIST TABLESWITCH max CDATA #REQUIRED>
|
||||
<!ATTLIST TABLESWITCH min CDATA #REQUIRED>
|
||||
|
||||
<!ELEMENT label EMPTY>
|
||||
<!ATTLIST label key CDATA #IMPLIED>
|
||||
<!ATTLIST label name CDATA #REQUIRED>
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
<html>
|
||||
<!--
|
||||
* ASM XML Adapter
|
||||
* Copyright (c) 2004-2011, 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.
|
||||
-->
|
||||
<body>
|
||||
Provides <a href="http://sax.sourceforge.net/">SAX 2.0</a> adapters for ASM
|
||||
visitors to convert classes to and from XML.
|
||||
These adapters can be chained with other SAX compliant content handlers and
|
||||
filters, eg. XSLT or XQuery engines. This package is bundled as
|
||||
a separate <tt>asm-xml.jar</tt> library and requires <tt>asm.jar</tt>.
|
||||
<p>
|
||||
<tt>ASMContentHandler</tt> and <tt>SAXClassAdapter/SAXCodeAdapter</tt>
|
||||
are using <a href="asm-xml.dtd">asm-xml.dtd</a>.
|
||||
Here is the example of bytecode to bytecode XSLT transformation.
|
||||
|
||||
<pre>
|
||||
SAXTransformerFactory saxtf = ( SAXTransformerFactory) TransformerFactory.newInstance();
|
||||
Templates templates = saxtf.newTemplates( xsltSource);
|
||||
|
||||
TransformerHandler handler = saxtf.newTransformerHandler( templates);
|
||||
handler.setResult( new SAXResult( new ASMContentHandler( outputStream, computeMax)));
|
||||
|
||||
ClassReader cr = new ClassReader( bytecode);
|
||||
cr.accept( new SAXClassAdapter( handler, cr.getVersion(), false), false);
|
||||
</pre>
|
||||
|
||||
See JAXP and SAX documentation for more detils.
|
||||
|
||||
<p>
|
||||
There are few illustrations of the bytecode transformation with XSLT in
|
||||
examples directory. The following XSLT procesors has been tested.
|
||||
|
||||
<blockquote>
|
||||
<table border="1" cellspacing="0" cellpadding="3">
|
||||
<tr>
|
||||
<th>Engine</td>
|
||||
<th>javax.xml.transform.TransformerFactory property</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>jd.xslt</td>
|
||||
<td>jd.xml.xslt.trax.TransformerFactoryImpl</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Saxon</td>
|
||||
<td>net.sf.saxon.TransformerFactoryImpl</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Caucho</td>
|
||||
<td>com.caucho.xsl.Xsl</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Xalan interpeter</td>
|
||||
<td>org.apache.xalan.processor.TransformerFactory</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>Xalan xsltc</td>
|
||||
<td>org.apache.xalan.xsltc.trax.TransformerFactoryImpl</td>
|
||||
</tr>
|
||||
</table>
|
||||
</blockquote>
|
||||
|
||||
@since ASM 1.4.3
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -83,6 +83,7 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
|||
* Make the tabs menu and middle mouse button click work on the tab itself not just the close button.
|
||||
*
|
||||
* before 3.0.0:
|
||||
* EVERYTHING ON THE FUCKING GITHUB ISSUES LOL
|
||||
* make it use that global last used inside of export as jar
|
||||
* Spiffy up the plugin console with hilighted lines
|
||||
* Take https://github.com/ptnkjke/Java-Bytecode-Editor visualize
|
||||
|
@ -98,7 +99,7 @@ import the.bytecode.club.bytecodeviewer.plugin.PluginManager;
|
|||
*
|
||||
* -----2.9.9-----:
|
||||
* 08/01/2015 - Fixed a pingback concurrency exception issue.
|
||||
* 08/01/2015 - Fixed a typo for FernFlower decompiler.
|
||||
* 08/03/2015 - Fixed a typo for FernFlower decompiler.
|
||||
*
|
||||
* @author Konloch
|
||||
*
|
||||
|
|
|
@ -140,6 +140,7 @@ public class KrakatauDecompiler extends Decompiler {
|
|||
BytecodeViewer.python,
|
||||
"-O", //love you storyyeller <3
|
||||
BytecodeViewer.krakatauWorkingDirectory + BytecodeViewer.fs + "decompile.py",
|
||||
"-skip", //love you storyyeller <3
|
||||
"-nauto",
|
||||
"-path",
|
||||
BytecodeViewer.rt+";"+tempJar.getAbsolutePath(),
|
||||
|
|
Loading…
Reference in a new issue