+ arg = N(n);
+ }
+ break;
+ default:
+ set(pos,op,N(n));
+ return;
+ }
+ this.op[pos] = op;
+ this.arg[pos] = arg;
+ }
+
+ /** Sets the bytecode and argument at <i>pos</i> to <i>op</i> and <i>arg</i> respectivly.
+ @exception ArrayIndexOutOfBoundException if pos < 0 || pos >= size()
+ */
+ public final void set(int pos, byte op, Object arg) {
+ switch(op) {
+ case ILOAD: case ISTORE: case LLOAD: case LSTORE: case FLOAD:
+ case FSTORE: case DLOAD: case DSTORE: case ALOAD: case ASTORE:
+ // set(int,byte,int) always handles these ops itself
+ set(pos,op,((Integer)arg).intValue());
+ return;
+ case RET:
+ if(((Integer)arg).intValue() > 255) {
+ op = WIDE;
+ arg = new Wide(RET,((Integer)arg).intValue());
+ }
+ break;
+ case IINC: {
+ Pair pair = (Pair) arg;
+ if(pair.i1 > 255 || pair.i2 < -128 || pair.i2 > 127) {
+ op = WIDE;
+ arg = new Wide(IINC,pair.i1,pair.i2);