-------- - NOTES -------- The followings are random notes about BytecodeVerification testing methods. Each testing method has the form bytecode_verification_[_type] where is the name of the instruction tested (ex: fstore_1) [_type] is the optional type of the instruction, this field is use for the instructions baload, bastore, ldc, getfield, getstatic, multianewarray, newarray, putfield and putstatic. Note that the getfield, getstatic, multianewarray newarray, putfield and putstatic use [_type] as object in their reference form (i.e. public static Object bytecode_verification_getfield_object). Getfield, getstatic, putfield and putstatic use [_type] as array in their array form (i.e. public static Object[] bytecode_verification_getfield_array) The following instructions do not have a specific method to test them: areturn, athrow, dreturn, freturn, ireturn, lreturn, invokeinterface, invokespecial, invokestatic, invokevirtual, jsr, jsr_w, ret, return Each instruction requiring a non-array reference is passed a reference to java.lang.Object. The instructions requiering a field reference access a field from BytecodeVerificationFields named a, or an where is the type of the field needed (i.e. int, Float, etc). The instruction requirering a reference type field acces the fields anObject and anArray which are referencing respectively a java.lang.Object and an array of java.lang.Object Each instruction requiring a non-type-specific array reference is passed a reference to an array of java.lang.Object The bipush instruction returns the value -86 (0xAA) The sipush instruction returns the value 170 (0xAA) The methods testing the checkcast and instanceof instructions return 1 if the reference is an instance of java.lang.Object otherwise the method testing checkcast throws a ClassCastException and the method testing instanceof returns 0 Each load instruction in generic format (i.e. fload , not fload_1), including the wide format (wide fload ) take the parameter 0 and thus is equivalent to the non-generic load_0 instruction Each store instruction in generic format (i.e. fstore , not fstore_1), including the wide format (wide fstore ) take the parameter 1 and thus is equivalent to the non-generic store_1 instruction except the dstore and lstore instructions which take the parameter 0 and thus are equivalent to the non-generic dstore_0 and lstore_0 Each instructions of the dup family are tested with integer values. These methods return the integer value 1 when correctly implemented or else return the integer value 0 Each instructions of the dup2 family are tested with long and integer values. These methods return the integer value 1 when correctly implemented or else return the integer value 0 or throw an exception Each branching instruction returns the integer value 1 when branching, or else return the integer value 0 The methods testing iinc and wide iinc add 1 to the value passed in parameter and returns it There are 3 methods testing the ldc and ldc_w instructions, returning an int value (1) named bytecode_verification_ldc_int and bytecode_verification_ldc_w_int, a float value (1.0) named bytecode_verification_ldc_float and bytecode_verification_ldc_w_float and a java.lang.String value ("Hello World!") named bytecode_verification_ldc_Ljava/lang/String and bytecode_verification_ldc_w_Ljava/lang/String There are 2 methods testing the instruction ldc2_w returning a long value (1) named bytecode_verification_ldc2_w_long bytecode_verification_ldc_ and a double value (1.0) named bytecode_verification_ldc2_w_double The methods testing the multianewarray instruction return a 2 dimensions array their respective type The methods testing the pop and pop2 instructions return the value of their first parameter when correctly implemented or else return the value of their second parameter