JML

org.jmlspecs.util.dis
Class JmlDisassembler

java.lang.Object
  extended byorg.multijava.dis.Disassembler
      extended byorg.jmlspecs.util.dis.JmlDisassembler
All Implemented Interfaces:
Constants, Constants, Constants

public class JmlDisassembler
extends Disassembler
implements Constants

A class to print type signatures encoded in .sym files. The .sym file is an extension to Java .class file but without the bytecode for method bodies.


Nested Class Summary
protected static class JmlDisassembler.JmlDisassemblerHelper
          A helper class to tune the disassembler to JML.
 
Nested classes inherited from class org.multijava.dis.Disassembler
Disassembler.DisassemblerHelper
 
Field Summary
private static JmlDisassembler.JmlDisassemblerHelper helper
          A helper object to tune the disassembler to JML.
 
Fields inherited from class org.multijava.dis.Disassembler
classInfo, options
 
Fields inherited from interface org.jmlspecs.util.dis.Constants
ACC2_RAC_METHOD, ACC_CODE_BIGINT_MATH, ACC_CODE_JAVA_MATH, ACC_CODE_SAFE_MATH, ACC_GHOST, ACC_HELPER, ACC_INSTANCE, ACC_MODEL, ACC_MONITORED, ACC_NON_NULL, ACC_PURE, ACC_SPEC_BIGINT_MATH, ACC_SPEC_JAVA_MATH, ACC_SPEC_PROTECTED, ACC_SPEC_PUBLIC, ACC_SPEC_SAFE_MATH, ACC_UNINITIALIZED
 
Fields inherited from interface org.multijava.util.classfile.Constants
ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_SYNTHETIC, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_FLAG_ARRAY, ACCESS_FLAG_NAMES, ATT_ANCHOR, ATT_BRIDGE, ATT_CODE, ATT_CONSTANTVALUE, ATT_DEPRECATED, ATT_DISPATCHER, ATT_EXCEPTIONS, ATT_GENERIC, ATT_GENERIC_FUNCTIONS, ATT_INNERCLASSES, ATT_LINENUMBERTABLE, ATT_LOCALVARIABLETABLE, ATT_MM_BODY, ATT_REDIRECTOR, ATT_RMJ_GLUE, ATT_RMJ_SIGNATURE, ATT_RUNTIME_VISIBLE_ANNOTATIONS, ATT_RUNTIME_VISIBLE_PARAMETER_ANNOTATIONS, ATT_SIGNATURE, ATT_SOURCEFILE, ATT_SYNTHETIC, ATT_UNIVERSE_FIELD, ATT_UNIVERSE_METHOD, ATT_UNIVERSE_VERSION, CST_CLASS, CST_DOUBLE, CST_FIELD, CST_FLOAT, CST_INTEGER, CST_INTERFACEMETHOD, CST_LONG, CST_METHOD, CST_NAMEANDTYPE, CST_STRING, CST_UTF8, ENV_DEBUG_MODE, ENV_USE_CACHE, JAVA_MAGIC, JAVA_MAJOR, JAVA_MINOR, MAX_CODE_PER_METHOD, opc_aaload, opc_aastore, opc_aconst_null, opc_aload, opc_aload_0, opc_aload_1, opc_aload_2, opc_aload_3, opc_anewarray, opc_areturn, opc_arraylength, opc_astore, opc_astore_0, opc_astore_1, opc_astore_2, opc_astore_3, opc_athrow, opc_baload, opc_bastore, opc_bipush, opc_caload, opc_castore, opc_checkcast, opc_d2f, opc_d2i, opc_d2l, opc_dadd, opc_daload, opc_dastore, opc_dcmpg, opc_dcmpl, opc_dconst_0, opc_dconst_1, opc_ddiv, opc_dload, opc_dload_0, opc_dload_1, opc_dload_2, opc_dload_3, opc_dmul, opc_dneg, opc_drem, opc_dreturn, opc_dstore, opc_dstore_0, opc_dstore_1, opc_dstore_2, opc_dstore_3, opc_dsub, opc_dup, opc_dup2, opc_dup2_x1, opc_dup2_x2, opc_dup_x1, opc_dup_x2, opc_f2d, opc_f2i, opc_f2l, opc_fadd, opc_faload, opc_fastore, opc_fcmpg, opc_fcmpl, opc_fconst_0, opc_fconst_1, opc_fconst_2, opc_fdiv, opc_fload, opc_fload_0, opc_fload_1, opc_fload_2, opc_fload_3, opc_fmul, opc_fneg, opc_frem, opc_freturn, opc_fstore, opc_fstore_0, opc_fstore_1, opc_fstore_2, opc_fstore_3, opc_fsub, opc_getfield, opc_getstatic, opc_goto, opc_goto_w, opc_i2b, opc_i2c, opc_i2d, opc_i2f, opc_i2l, opc_i2s, opc_iadd, opc_iaload, opc_iand, opc_iastore, opc_iconst_0, opc_iconst_1, opc_iconst_2, opc_iconst_3, opc_iconst_4, opc_iconst_5, opc_iconst_m1, opc_idiv, opc_if_acmpeq, opc_if_acmpne, opc_if_icmpeq, opc_if_icmpge, opc_if_icmpgt, opc_if_icmple, opc_if_icmplt, opc_if_icmpne, opc_ifeq, opc_ifge, opc_ifgt, opc_ifle, opc_iflt, opc_ifne, opc_ifnonnull, opc_ifnull, opc_iinc, opc_iload, opc_iload_0, opc_iload_1, opc_iload_2, opc_iload_3, opc_imul, opc_ineg, opc_instanceof, opc_invokeinterface, opc_invokespecial, opc_invokestatic, opc_invokevirtual, opc_ior, opc_irem, opc_ireturn, opc_ishl, opc_ishr, opc_istore, opc_istore_0, opc_istore_1, opc_istore_2, opc_istore_3, opc_isub, opc_iushr, opc_ixor, opc_jsr, opc_jsr_w, opc_l2d, opc_l2f, opc_l2i, opc_ladd, opc_laload, opc_land, opc_lastore, opc_lcmp, opc_lconst_0, opc_lconst_1, opc_ldc, opc_ldc2_w, opc_ldc_w, opc_ldiv, opc_lload, opc_lload_0, opc_lload_1, opc_lload_2, opc_lload_3, opc_lmul, opc_lneg, opc_lookupswitch, opc_lor, opc_lrem, opc_lreturn, opc_lshl, opc_lshr, opc_lstore, opc_lstore_0, opc_lstore_1, opc_lstore_2, opc_lstore_3, opc_lsub, opc_lushr, opc_lxor, opc_monitorenter, opc_monitorexit, opc_multianewarray, opc_new, opc_newarray, opc_nop, opc_pop, opc_pop2, opc_putfield, opc_putstatic, opc_ret, opc_return, opc_saload, opc_sastore, opc_sipush, opc_swap, opc_tableswitch, opc_wide, opc_xxxunusedxxx, POO_ASCII_CONSTANT, POO_CLASS_CONSTANT, POO_DOUBLE_CONSTANT, POO_FLOAT_CONSTANT, POO_INTEGER_CONSTANT, POO_LONG_CONSTANT, POO_NAT_CONSTANT, POO_REF_CONSTANT, POO_STRING_CONSTANT, TYP_ADDRESS, TYP_DOUBLE, TYP_FLOAT, TYP_INT, TYP_LONG, TYP_REFERENCE, TYP_VOID
 
Fields inherited from interface org.multijava.dis.Constants
OPT_NO_CODE, OPT_SHOW_STACK, OPT_SORT_MEMBERS, OPT_STDOUT
 
Constructor Summary
private JmlDisassembler(org.jmlspecs.util.classfile.JmlClassInfo classInfo, JDisOptions options)
          Creates a disassembler object for the given class info classInfo.
 
Method Summary
static void disassemble(String sourceFile, String destination, DisOptions options)
          Disassembles a symbol file.
private  void writeModifiers(IndentingWriter out, long modifiers)
          Prints the given modifiers that may contain both JML and Java modifiers.
protected  void writeModifiers(IndentingWriter out, ClassInfo info)
          Prints the modifiers of the given class info.
protected  void writeModifiers(IndentingWriter out, FieldInfo info)
          Prints the modifiers of the given field info.
protected  void writeModifiers(IndentingWriter out, InnerClassInfo info)
          Prints the modifiers of the given inner class info.
protected  void writeModifiers(IndentingWriter out, MethodInfo info)
          Prints the modifiers of the given method info.
 
Methods inherited from class org.multijava.dis.Disassembler
disassemble
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

helper

private static final JmlDisassembler.JmlDisassemblerHelper helper
A helper object to tune the disassembler to JML.

Constructor Detail

JmlDisassembler

private JmlDisassembler(org.jmlspecs.util.classfile.JmlClassInfo classInfo,
                        JDisOptions options)
Creates a disassembler object for the given class info classInfo.

Method Detail

disassemble

public static void disassemble(String sourceFile,
                               String destination,
                               DisOptions options)
                        throws UnpositionedError
Disassembles a symbol file.

Throws:
UnpositionedError

writeModifiers

protected void writeModifiers(IndentingWriter out,
                              ClassInfo info)
Prints the modifiers of the given class info. This method is overridden here to also write JML-specific modifiers.

Overrides:
writeModifiers in class Disassembler

writeModifiers

protected void writeModifiers(IndentingWriter out,
                              InnerClassInfo info)
Prints the modifiers of the given inner class info. This method is overridden here to also write JML-specific modifiers.

Overrides:
writeModifiers in class Disassembler

writeModifiers

protected void writeModifiers(IndentingWriter out,
                              FieldInfo info)
Prints the modifiers of the given field info. This method is overridden here to also write JML-specific modifiers.

Overrides:
writeModifiers in class Disassembler

writeModifiers

protected void writeModifiers(IndentingWriter out,
                              MethodInfo info)
Prints the modifiers of the given method info. This method is overridden here to also write JML-specific modifiers.

Overrides:
writeModifiers in class Disassembler

writeModifiers

private void writeModifiers(IndentingWriter out,
                            long modifiers)
Prints the given modifiers that may contain both JML and Java modifiers.


JML

JML is Copyright (C) 1998-2002 by Iowa State University and is distributed under the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This release depends on code from the MultiJava project and is based in part on the Kopi project Copyright (C) 1990-99 DMS Decision Management Systems Ges.m.b.H.