final void put ( final ByteVector code , final int sourceInsnBytecodeOffset , final boolean wideReference ) { if ( ( flags & FLAG_RESOLVED ) == 0 ) { if ( wideReference ) { addForwardReference ( sourceInsnBytecodeOffset , FORWARD_REFERENCE_TYPE_WIDE , code . length ) ; code . putInt ( - 1 ) ; } else { addForwardReference ( sourceInsnBytecodeOffset , FORWARD_REFERENCE_TYPE_SHORT , code . length ) ; code . putShort ( - 1 ) ; } } else { if ( wideReference ) { code . putInt ( bytecodeOffset - sourceInsnBytecodeOffset ) ; } else { code . putShort ( bytecodeOffset - sourceInsnBytecodeOffset ) ; } } }
Puts a reference to this label in the bytecode of a method . If the bytecode offset of the label is known the relative bytecode offset between the label and the instruction referencing it is computed and written directly . Otherwise a null relative offset is written and a new forward reference is declared for this label .