/** * Set the last {@link Instruction} for which this local is in scope. The instruction must already * be a part of the method. WARNING: if this instruction is deleted, the results are undefined. */ public void setEnd(Instruction end) { if (end.getCode() != getCode()) throw new IllegalArgumentException( "Instruction pointers and " + "targets must be part of the same code block."); _end = end; _length = -1; }
/** Get the number of bytes for which this local has a value in the code byte array. */ public int getLength() { if (_end != null) return _end.getByteIndex() + _end.getLength() - _target.getByteIndex(); return _length; }