sig
type short_offset = Utils.s2
type long_offset = Utils.s4
type t =
AALOAD
| AASTORE
| ACONST_NULL
| ALOAD of Utils.u1
| ALOAD_0
| ALOAD_1
| ALOAD_2
| ALOAD_3
| ANEWARRAY of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class ]
| ARETURN
| ARRAYLENGTH
| ASTORE of Utils.u1
| ASTORE_0
| ASTORE_1
| ASTORE_2
| ASTORE_3
| ATHROW
| BALOAD
| BASTORE
| BIPUSH of Utils.s1
| CALOAD
| CASTORE
| CHECKCAST of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class ]
| D2F
| D2I
| D2L
| DADD
| DALOAD
| DASTORE
| DCMPG
| DCMPL
| DCONST_0
| DCONST_1
| DDIV
| DLOAD of Utils.u1
| DLOAD_0
| DLOAD_1
| DLOAD_2
| DLOAD_3
| DMUL
| DNEG
| DREM
| DRETURN
| DSTORE of Utils.u1
| DSTORE_0
| DSTORE_1
| DSTORE_2
| DSTORE_3
| DSUB
| DUP
| DUP2
| DUP2_X1
| DUP2_X2
| DUP_X1
| DUP_X2
| F2D
| F2I
| F2L
| FADD
| FALOAD
| FASTORE
| FCMPG
| FCMPL
| FCONST_0
| FCONST_1
| FCONST_2
| FDIV
| FLOAD of Utils.u1
| FLOAD_0
| FLOAD_1
| FLOAD_2
| FLOAD_3
| FMUL
| FNEG
| FREM
| FRETURN
| FSTORE of Utils.u1
| FSTORE_0
| FSTORE_1
| FSTORE_2
| FSTORE_3
| FSUB
| GETFIELD of (Name.for_class * Name.for_field * Descriptor.for_field)
| GETSTATIC of (Name.for_class * Name.for_field * Descriptor.for_field)
| GOTO of Instruction.short_offset
| GOTO_W of Instruction.long_offset
| 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
| IF_ACMPEQ of Instruction.short_offset
| IF_ACMPNE of Instruction.short_offset
| IF_ICMPEQ of Instruction.short_offset
| IF_ICMPGE of Instruction.short_offset
| IF_ICMPGT of Instruction.short_offset
| IF_ICMPLE of Instruction.short_offset
| IF_ICMPLT of Instruction.short_offset
| IF_ICMPNE of Instruction.short_offset
| IFEQ of Instruction.short_offset
| IFGE of Instruction.short_offset
| IFGT of Instruction.short_offset
| IFLE of Instruction.short_offset
| IFLT of Instruction.short_offset
| IFNE of Instruction.short_offset
| IFNONNULL of Instruction.short_offset
| IFNULL of Instruction.short_offset
| IINC of Utils.u1 * Utils.s1
| ILOAD of Utils.u1
| ILOAD_0
| ILOAD_1
| ILOAD_2
| ILOAD_3
| IMUL
| INEG
| INSTANCEOF of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class ]
| INVOKEDYNAMIC of
(Bootstrap.method_specifier * Name.for_method * Descriptor.for_method)
| INVOKEINTERFACE of
(Name.for_class * Name.for_method * Descriptor.for_method) *
Utils.u1
| INVOKESPECIAL of
(Name.for_class * Name.for_method * Descriptor.for_method)
| INVOKESTATIC of
(Name.for_class * Name.for_method * Descriptor.for_method)
| INVOKEVIRTUAL of
([ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class ] * Name.for_method *
Descriptor.for_method)
| IOR
| IREM
| IRETURN
| ISHL
| ISHR
| ISTORE of Utils.u1
| ISTORE_0
| ISTORE_1
| ISTORE_2
| ISTORE_3
| ISUB
| IUSHR
| IXOR
| JSR of Instruction.short_offset
| JSR_W of Instruction.long_offset
| L2D
| L2F
| L2I
| LADD
| LALOAD
| LAND
| LASTORE
| LCMP
| LCONST_0
| LCONST_1
| LDC of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class
| `Float of float
| `Int of int32
| `Method_handle of Bootstrap.method_handle
| `Method_type of Descriptor.for_method
| `String of Utils.UTF8.t ]
| LDC2_W of [ `Double of float | `Long of int64 ]
| LDC_W of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class
| `Float of float
| `Int of int32
| `Method_handle of Bootstrap.method_handle
| `Method_type of Descriptor.for_method
| `String of Utils.UTF8.t ]
| LDIV
| LLOAD of Utils.u1
| LLOAD_0
| LLOAD_1
| LLOAD_2
| LLOAD_3
| LMUL
| LNEG
| LOOKUPSWITCH of Instruction.long_offset * Utils.s4 *
(Utils.s4 * Instruction.long_offset) list
| LOR
| LREM
| LRETURN
| LSHL
| LSHR
| LSTORE of Utils.u1
| LSTORE_0
| LSTORE_1
| LSTORE_2
| LSTORE_3
| LSUB
| LUSHR
| LXOR
| MONITORENTER
| MONITOREXIT
| MULTIANEWARRAY of
[ `Array_type of Descriptor.array_type
| `Class_or_interface of Name.for_class ] * Utils.u1
| NEW of Name.for_class
| NEWARRAY of Descriptor.java_type
| NOP
| POP
| POP2
| PUTFIELD of (Name.for_class * Name.for_field * Descriptor.for_field)
| PUTSTATIC of (Name.for_class * Name.for_field * Descriptor.for_field)
| RET of Utils.u1
| RETURN
| SALOAD
| SASTORE
| SIPUSH of Utils.s2
| SWAP
| TABLESWITCH of Instruction.long_offset * Utils.s4 * Utils.s4 *
Instruction.long_offset list
| WIDE_ALOAD of Utils.u2
| WIDE_ASTORE of Utils.u2
| WIDE_DLOAD of Utils.u2
| WIDE_DSTORE of Utils.u2
| WIDE_FLOAD of Utils.u2
| WIDE_FSTORE of Utils.u2
| WIDE_IINC of Utils.u2 * Utils.s2
| WIDE_ILOAD of Utils.u2
| WIDE_ISTORE of Utils.u2
| WIDE_LLOAD of Utils.u2
| WIDE_LSTORE of Utils.u2
| WIDE_RET of Utils.u2
val equal : Instruction.t -> Instruction.t -> bool
val compare : Instruction.t -> Instruction.t -> int
val hash : Instruction.t -> int
type error =
Invalid_pool_element
| Invalid_field
| Invalid_dynamic_method
| Invalid_interface_method
| Invalid_method
| Invalid_parameter
| Invalid_primitive_type
| Invalid_switch_cases
| Invalid_pool_index
| Invalid_pool_entry
| Invalid_primitive_array_type
| Invalid_index
| Invalid_array_element
| Invalid_class_name
| Invalid_unsigned_byte
| Invalid_byte
| Invalid_unsigned_short
| Invalid_signed_short
| Invalid_signed_long
| Invalid_short_offset
| Invalid_long_offset
| Invalid_number_of_arguments
| Unknown_instruction
| Invalid_method_handle
| Too_many_bootstrap_specifiers
exception Exception of Instruction.error
val string_of_error : Instruction.error -> string
val decode :
Bootstrap.methods ->
ConstantPool.t -> ByteCode.instruction -> Instruction.t
val encode :
Bootstrap.methods ->
ConstantPool.extendable -> Instruction.t -> ByteCode.instruction
type parameter =
Int_constant of int64
| Offset of int32
| Float_constant of float
| String_constant of Utils.UTF8.t
| Class_name of Name.for_class
| Array_type of Utils.UTF8.t
| Primitive_type of Descriptor.java_type
| Field of Name.for_class * Name.for_field * Descriptor.for_field
| Dynamic_method of Bootstrap.method_specifier * Name.for_method *
Descriptor.for_method
| Method of Name.for_class * Name.for_method * Descriptor.for_method
| Array_method of Descriptor.array_type * Name.for_method *
Descriptor.for_method
| Method_type_constant of Descriptor.for_method
| Method_handle_constant of Bootstrap.method_handle
type parameters_tail =
No_tail
| Match_offset_pairs of (Utils.s4 * Instruction.long_offset) list
| Long_offsets of Instruction.long_offset list
val compile :
int ->
bool ->
string ->
Instruction.parameter list ->
Instruction.parameters_tail -> int * Instruction.t
val decompile :
int ->
Instruction.t ->
int * bool * string * Instruction.parameter list *
Instruction.parameters_tail
val size_of : int -> Instruction.t -> int
val size_of_list : int -> Instruction.t list -> int
val version_bounds : Instruction.t -> Version.bounds
end