예제 #1
0
파일: Local.java 프로젝트: slemur/SF3
 /** The last {@link Instruction} for which this local is in scope. */
 public Instruction getEnd() {
   if (_end != null) return _end;
   int idx = _target.getByteIndex() + _length;
   Instruction end = getCode().getInstruction(idx);
   if (end != null && (end.prev instanceof Instruction)) {
     return (Instruction) end.prev;
   }
   return getCode().getLastInstruction();
 }
예제 #2
0
파일: Local.java 프로젝트: slemur/SF3
 /** Set the index into the code byte array at which this local starts. */
 public void setStartPc(int startPc) {
   _target.setByteIndex(startPc);
 }
예제 #3
0
파일: Local.java 프로젝트: slemur/SF3
 /**
  * Set the {@link Instruction} marking the beginning this local. The instruction must already be a
  * part of the method. WARNING: if this instruction is deleted, the results are undefined.
  */
 public void setStart(Instruction instruction) {
   _target.setTargetInstruction(instruction);
 }
예제 #4
0
파일: Local.java 프로젝트: slemur/SF3
 /** Return the instruction marking the beginning of this local. */
 public Instruction getStart() {
   return _target.getTargetInstruction();
 }
예제 #5
0
파일: Local.java 프로젝트: slemur/SF3
 /** Return the index into the code byte array at which this local starts. */
 public int getStartPc() {
   return _target.getByteIndex();
 }
예제 #6
0
파일: Local.java 프로젝트: slemur/SF3
 public void replaceTarget(Instruction oldTarget, Instruction newTarget) {
   _target.replaceTarget(oldTarget, newTarget);
   if (getEnd() == oldTarget) setEnd(newTarget);
 }
예제 #7
0
파일: Local.java 프로젝트: slemur/SF3
 public void updateTargets() {
   _target.updateTargets();
   _end = getEnd();
 }
예제 #8
0
파일: Local.java 프로젝트: slemur/SF3
 /** 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;
 }