CodeTools proposal: "AsmTools"

Jonathan Gibbons jonathan.gibbons at
Wed Dec 10 19:29:30 UTC 2014

Yes, this seems a good thing to do;  please go ahead and make this happen.

-- Jon

On 12/04/2014 01:02 PM, Brian Kurotsuchi wrote:
> Name: AsmTools
> Summary: A set of (Java class file) assembler/disassemblers, in order 
> to facilitate the practice of verifying VM class-loader rejection of
> invalid classfiles - for the purpose of OpenJDK development.
> Proposed by: Brian Kurotsuchi, Oracle, Java Conformance Tools team
> Rationale:
> This proposal is to open the Java Assembler Tools (AsmTools) into the
> CodeTools project of OpenJDK. The rationale for this is to provide
> transparency to the process of testing Java Virtual machines.  The
> advantage to promoting standard and methodical negative testing of 
> Java VM class-loading  allows JDK developers to test their own VM and 
> other environmental changes.  Publishing negative tests may also allow 
> external OpenJDK users to contribute new tests for class file 
> rejection that are not currently covered by SQE nor JCK test suites.
> AsmTools consists of 2 sets of assembler/disassemblers:
> Jasm/JDis - an assembler language that provides a Java-like 
> declaration of member signatures, while providing Java VM 
> specification compliant mnemonics for byte-code instructions. Jasm 
> also provides high-level syntax for constructs often found within 
> classfile attributes.   Jasm encoded tests are useful for sequencing 
> byte codes in a way that Javac compiled code might not normally 
> sequence byte-codes.
> JCod/JDec - an assembler language that provides byte-code containers 
> of class-file constructs. JCod encoded tests are useful for testing 
> the well-formedness of class-files, as well as creating collections 
> within a class-file construct that might be size-bounded by a normal 
> Java compiler.   JCod can also be used to 'fuzz' class files in a 
> methodical way that respects class-file constructs.
> AsmTools are completely reflexive - Java binary (.class) files may be
> disassembled into textual representations, which in turn can be
> assembled back to the same binary file.
> AsmTools are developed to support the latest class file formats, in
> lock-step with JDK development.
> Other open source Java assembler tools and binary classfile frameworks 
> exist.  They can be used for the purpose of synthesizing classfiles 
> for VM testing, however:
> a.) they typically are designed to enforce the limits imposed by the 
> VM specification of the class file format.  They are not designed to
> produce classes that violate those limits.
> b.) other assembler tools may not necessarily follow strict Java
> mnemonics as defined in the Java VM spec.
> c.) other assembler tools may not stay in lock-step with the current
> generation of the JDK and VM specifications.
> d.) class file libraries are harder to use for simple manipulations of 
> any given class file.  Typically, one has to create a program in that 
> framework to parse and modify a class for a specific change to a given 
> class.

More information about the code-tools-dev mailing list