protected final void modify_stack_maps_for_switches(InstructionHandle ih, InstructionList il) {
    Instruction inst;
    short opcode;

    if (!needStackMap) {
      return;
    }

    // Make sure all instruction offsets are uptodate.
    il.setPositions();

    // Loop through each instruction looking for a switch
    while (ih != null) {
      inst = ih.getInstruction();
      opcode = inst.getOpcode();

      if (opcode == Const.TABLESWITCH || opcode == Const.LOOKUPSWITCH) {
        int current_offset = ih.getPosition();
        int index = find_stack_map_index_after(current_offset);
        if (index == -1) {
          throw new RuntimeException("Invalid StackMap offset 3");
        }
        StackMapEntry stack_map = stack_map_table[index];
        int delta = (current_offset + inst.getLength()) - running_offset;
        if (delta != 0) {
          stack_map.updateByteCodeOffset(delta);
        }
        // Since StackMap offsets are relative to the previous one
        // we only have to do the first one after a switch.
        // But we do need to look at all the switch instructions.
      }

      // Go on to the next instruction in the list
      ih = ih.getNext();
    }
  }
protected final void modify_stack_maps_for_switches(InstructionHandle ih, InstructionList il) {
    Instruction inst;
    short opcode;

    if (!needStackMap) {
      return;
    }

    
    il.setPositions();

    
    while (ih != null) {
      inst = ih.getInstruction();
      opcode = inst.getOpcode();

      if (opcode == Const.TABLESWITCH || opcode == Const.LOOKUPSWITCH) {
        int current_offset = ih.getPosition();
        int index = find_stack_map_index_after(current_offset);
        if (index == -1) {
          throw new RuntimeException("Invalid StackMap offset 3");
        }
        StackMapEntry stack_map = stack_map_table[index];
        int delta = (current_offset + inst.getLength()) - running_offset;
        if (delta != 0) {
          stack_map.updateByteCodeOffset(delta);
        }
        
        
        
      }

      
      ih = ih.getNext();
    }
  }
protected final void modify_stack_maps_for_switches ( InstructionHandle ih , InstructionList il ) { Instruction inst ; short opcode ; if ( ! needStackMap ) { return ; } // Make sure all instruction offsets are uptodate. il . setPositions ( ) ; // Loop through each instruction looking for a switch while ( ih != null ) { inst = ih . getInstruction ( ) ; opcode = inst . getOpcode ( ) ; if ( opcode == Const . TABLESWITCH || opcode == Const . LOOKUPSWITCH ) { int current_offset = ih . getPosition ( ) ; int index = find_stack_map_index_after ( current_offset ) ; if ( index == - 1 ) { throw new RuntimeException ( "Invalid StackMap offset 3" ) ; } StackMapEntry stack_map = stack_map_table [ index ] ; int delta = ( current_offset + inst . getLength ( ) ) - running_offset ; if ( delta != 0 ) { stack_map . updateByteCodeOffset ( delta ) ; } // Since StackMap offsets are relative to the previous one // we only have to do the first one after a switch. // But we do need to look at all the switch instructions. } // Go on to the next instruction in the list ih = ih . getNext ( ) ; } }
Check to see if (due to some instruction modifications) there have been any changes in a switch
statement's padding bytes. If so, then update the corresponding StackMap to reflect this
change.

@param ih where to start looking for a switch instruction
@param il instruction list to search
Check to see if ( due to some instruction modifications ) there have been any changes in a switch statement s padding bytes . If so then update the corresponding StackMap to reflect this change .