protected int doOpcode(int pos,byte[] code) throws BadBytecode {
  try {
    int op=code[pos] & 0xff;
    if (op < 96)     if (op < 54)     return doOpcode0_53(pos,code,op);
 else     return doOpcode54_95(pos,code,op);
 else     if (op < 148)     return doOpcode96_147(pos,code,op);
 else     return doOpcode148_201(pos,code,op);
  }
 catch (  ArrayIndexOutOfBoundsException e) {
    throw new BadBytecode("inconsistent stack height " + e.getMessage(),e);
  }
}

protected int doOpcode ( int pos , byte [ ] code ) throws BadBytecode { try { int op = code [ pos ] & 0xff ; if ( op < 96 ) if ( op < 54 ) return doOpcode0_53 ( pos , code , op ) ; else return doOpcode54_95 ( pos , code , op ) ; else if ( op < 148 ) return doOpcode96_147 ( pos , code , op ) ; else return doOpcode148_201 ( pos , code , op ) ; } catch ( ArrayIndexOutOfBoundsException e ) { throw new BadBytecode ( "inconsistent stack height " + e . getMessage ( ) , e ) ; } }
does abstract interpretation on the given bytecode instruction . it records whether or not a local variable ( i . e . register ) is accessed . if the instruction requires that a local variable or a stack element has a more specific type , this method updates the type of it .
