Program: 83961
Project: 83961
Buggy source:
private void processInsn(int opcode){
switch (opcode) {
case DUP:
    this.push(this.stack[this.stackIndex]);
  return;
case SWAP:
{
  Object o=this.stack[this.stackIndex];
  this.stack[this.stackIndex]=this.stack[this.stackIndex - 1];
  this.stack[this.stackIndex - 1]=o;
  return;
}
case POP:
this.pop();
return;
case ACONST_NULL:
this.push(NULL);
return;
case ARRAYLENGTH:
this.set(INTEGER);
return;
case RETURN:
this.hasReturn=true;
return;
case BALOAD:
case SALOAD:
case CALOAD:
case IALOAD:
this.pop();
this.pop();
this.push(INTEGER);
break;
case LALOAD:
this.pop();
this.pop();
this.push(LONG);
break;
case FALOAD:
this.pop();
this.pop();
this.push(FLOAT);
break;
case DALOAD:
this.pop();
this.pop();
this.push(DOUBLE);
break;
case AALOAD:
this.pop();
this.pop();
this.push(TOP);
case IADD:
case ISUB:
case IMUL:
case IDIV:
case IREM:
case ISHL:
case ISHR:
case IUSHR:
this.pop();
this.pop();
this.push(INTEGER);
return;
case LADD:
case LSUB:
case LMUL:
case LDIV:
case LREM:
case LSHL:
case LSHR:
case LUSHR:
this.pop();
this.pop();
this.push(LONG);
return;
case FADD:
case FSUB:
case FMUL:
case FDIV:
case FREM:
this.pop();
this.pop();
this.push(FLOAT);
return;
case DADD:
case DSUB:
case DMUL:
case DDIV:
case DREM:
this.pop();
this.pop();
this.push(DOUBLE);
return;
case L2I:
case F2I:
case D2I:
this.set(INTEGER);
case I2L:
case F2L:
case D2L:
this.set(LONG);
return;
case I2F:
case L2F:
case D2F:
this.set(FLOAT);
return;
case LCMP:
case FCMPL:
case FCMPG:
case DCMPL:
case DCMPG:
this.pop();
this.pop();
this.push(INTEGER);
return;
}
}

Fixed version (ground truth):
private void processInsn(int opcode){
switch (opcode) {
case DUP:
{
      this.ensureStack(this.stackIndex + 2);
      this.stack[this.stackIndex + 1]=this.stack[this.stackIndex];
      this.stackIndex++;
      return;
    }
case DUP_X1:
{
    this.ensureStack(this.stackIndex + 2);
    this.stack[this.stackIndex + 1]=this.stack[this.stackIndex - 1];
    this.stackIndex++;
    return;
  }
case DUP_X2:
{
  this.ensureStack(this.stackIndex + 2);
  this.stack[this.stackIndex + 1]=this.stack[this.stackIndex - 2];
  this.stackIndex++;
  return;
}
case DUP2:
{
this.ensureStack(this.stackIndex + 3);
this.stack[this.stackIndex + 1]=this.stack[this.stackIndex - 1];
this.stack[this.stackIndex + 2]=this.stack[this.stackIndex];
this.stackIndex+=2;
return;
}
case DUP2_X1:
{
this.ensureStack(this.stackIndex + 3);
this.stack[this.stackIndex + 1]=this.stack[this.stackIndex - 2];
this.stack[this.stackIndex + 2]=this.stack[this.stackIndex - 1];
this.stackIndex+=2;
return;
}
case DUP2_X2:
{
this.ensureStack(this.stackIndex + 3);
this.stack[this.stackIndex + 1]=this.stack[this.stackIndex - 3];
this.stack[this.stackIndex + 2]=this.stack[this.stackIndex - 2];
this.stackIndex+=2;
return;
}
case SWAP:
{
Object o=this.stack[this.stackIndex];
this.stack[this.stackIndex]=this.stack[this.stackIndex - 1];
this.stack[this.stackIndex - 1]=o;
return;
}
case POP:
{
this.stackIndex--;
this.stackCount--;
return;
}
case POP2:
{
this.stackIndex-=2;
this.stackCount-=2;
}
case ACONST_NULL:
this.push(NULL);
return;
case ARRAYLENGTH:
this.set(INTEGER);
return;
case RETURN:
this.hasReturn=true;
return;
case BALOAD:
case SALOAD:
case CALOAD:
case IALOAD:
this.pop();
this.pop();
this.push(INTEGER);
break;
case LALOAD:
this.pop();
this.pop();
this.push(LONG);
break;
case FALOAD:
this.pop();
this.pop();
this.push(FLOAT);
break;
case DALOAD:
this.pop();
this.pop();
this.push(DOUBLE);
break;
case AALOAD:
this.pop();
this.pop();
this.push(TOP);
case IADD:
case ISUB:
case IMUL:
case IDIV:
case IREM:
case ISHL:
case ISHR:
case IUSHR:
this.pop();
this.pop();
this.push(INTEGER);
return;
case LADD:
case LSUB:
case LMUL:
case LDIV:
case LREM:
case LSHL:
case LSHR:
case LUSHR:
this.pop();
this.pop();
this.push(LONG);
return;
case FADD:
case FSUB:
case FMUL:
case FDIV:
case FREM:
this.pop();
this.pop();
this.push(FLOAT);
return;
case DADD:
case DSUB:
case DMUL:
case DDIV:
case DREM:
this.pop();
this.pop();
this.push(DOUBLE);
return;
case L2I:
case F2I:
case D2I:
this.set(INTEGER);
case I2L:
case F2L:
case D2L:
this.set(LONG);
return;
case I2F:
case L2F:
case D2F:
this.set(FLOAT);
return;
case LCMP:
case FCMPL:
case FCMPG:
case DCMPL:
case DCMPG:
this.pop();
this.pop();
this.push(INTEGER);
return;
}
}