/** * 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. * * @param pos the position of the instruction. * @return the size of the instruction at POS. */ 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. * * @param pos the position of the instruction. * @return the size of the instruction at POS. */ protected int doOpcode(int pos, byte[] code) throws BadBytecode { try { int op = code[pos] & 0xff; if (op < 54) return doOpcode0_53(pos, code, op); if (op < 96) return doOpcode54_95(pos, code, op); if (op < 148) return doOpcode96_147(pos, code, op); 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. * * @pos the position of the instruction. * @return the size of the instruction at POS. */ protected int doOpcode(int pos, byte[] code) throws BadBytecode { 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); }
/** * 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. * * @param pos the position of the instruction. * @return the size of the instruction at POS. */ 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()); } }
/** * 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. * * @param pos the position of the instruction. * @return the size of the instruction at POS. */ 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. * * @param pos the position of the instruction. * @return the size of the instruction at POS. */ 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. * * @param pos the position of the instruction. * @return the size of the instruction at POS. */ 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); } }