protected final void adjust_code_for_locals_change(
      MethodGen mgen, int index_first_moved_local, int size) {

    InstructionList il = mgen.getInstructionList();
    for (InstructionHandle ih = il.getStart(); ih != null; ih = ih.getNext()) {
      Instruction inst = ih.getInstruction();
      int orig_length = inst.getLength();
      int operand;

      if ((inst instanceof RET) || (inst instanceof IINC)) {
        IndexedInstruction index_inst = (IndexedInstruction) inst;
        if (index_inst.getIndex() >= index_first_moved_local) {
          index_inst.setIndex(index_inst.getIndex() + size);
        }
      } else if (inst instanceof LocalVariableInstruction) {
        // BCEL handles all the details of which opcode and if index
        // is implicit or explicit; also, and if needs to be WIDE.
        operand = ((LocalVariableInstruction) inst).getIndex();
        if (operand >= index_first_moved_local) {
          ((LocalVariableInstruction) inst).setIndex(operand + size);
        }
      }
      // Unfortunately, BCEL doesn't take care of incrementing the
      // offset within StackMapEntrys.
      int delta = inst.getLength() - orig_length;
      if (delta > 0) {
        il.setPositions();
        update_stack_map_offset(ih.getPosition(), delta);
        modify_stack_maps_for_switches(ih, il);
      }
    }
  }
protected final void adjust_code_for_locals_change(
      MethodGen mgen, int index_first_moved_local, int size) {

    InstructionList il = mgen.getInstructionList();
    for (InstructionHandle ih = il.getStart(); ih != null; ih = ih.getNext()) {
      Instruction inst = ih.getInstruction();
      int orig_length = inst.getLength();
      int operand;

      if ((inst instanceof RET) || (inst instanceof IINC)) {
        IndexedInstruction index_inst = (IndexedInstruction) inst;
        if (index_inst.getIndex() >= index_first_moved_local) {
          index_inst.setIndex(index_inst.getIndex() + size);
        }
      } else if (inst instanceof LocalVariableInstruction) {
        
        
        operand = ((LocalVariableInstruction) inst).getIndex();
        if (operand >= index_first_moved_local) {
          ((LocalVariableInstruction) inst).setIndex(operand + size);
        }
      }
      
      
      int delta = inst.getLength() - orig_length;
      if (delta > 0) {
        il.setPositions();
        update_stack_map_offset(ih.getPosition(), delta);
        modify_stack_maps_for_switches(ih, il);
      }
    }
  }
protected final void adjust_code_for_locals_change ( MethodGen mgen , int index_first_moved_local , int size ) { InstructionList il = mgen . getInstructionList ( ) ; for ( InstructionHandle ih = il . getStart ( ) ; ih != null ; ih = ih . getNext ( ) ) { Instruction inst = ih . getInstruction ( ) ; int orig_length = inst . getLength ( ) ; int operand ; if ( ( inst instanceof RET ) || ( inst instanceof IINC ) ) { IndexedInstruction index_inst = ( IndexedInstruction ) inst ; if ( index_inst . getIndex ( ) >= index_first_moved_local ) { index_inst . setIndex ( index_inst . getIndex ( ) + size ) ; } } else if ( inst instanceof LocalVariableInstruction ) { // BCEL handles all the details of which opcode and if index // is implicit or explicit; also, and if needs to be WIDE. operand = ( ( LocalVariableInstruction ) inst ) . getIndex ( ) ; if ( operand >= index_first_moved_local ) { ( ( LocalVariableInstruction ) inst ) . setIndex ( operand + size ) ; } } // Unfortunately, BCEL doesn't take care of incrementing the // offset within StackMapEntrys. int delta = inst . getLength ( ) - orig_length ; if ( delta > 0 ) { il . setPositions ( ) ; update_stack_map_offset ( ih . getPosition ( ) , delta ) ; modify_stack_maps_for_switches ( ih , il ) ; } } }
Process the instruction list, adding size (1 or 2) to the index of each Instruction that
references a local that is equal or higher in the local map than index_first_moved_local. Size
should be the size of the new local that was just inserted at index_first_moved_local.

@param mgen MethodGen to be modified
@param index_first_moved_local original index of first local moved "up"
@param size size of new local added (1 or 2)
Process the instruction list adding size ( 1 or 2 ) to the index of each Instruction that references a local that is equal or higher in the local map than index_first_moved_local . Size should be the size of the new local that was just inserted at index_first_moved_local .