Program: 84350
Project: 84350
Buggy source:
public void visitInsn(int opcode) throws BytecodeException {
switch (opcode) {
case NOP:
    return;
case ACONST_NULL:
  this.push(NULL);
return;
case ICONST_M1:
case ICONST_0:
case ICONST_1:
case ICONST_2:
case ICONST_3:
case ICONST_4:
case ICONST_5:
this.push(INT);
return;
case LCONST_M1:
case LCONST_0:
case LCONST_1:
this.push(LONG);
return;
case FCONST_0:
case FCONST_1:
case FCONST_2:
this.push(FLOAT);
return;
case DCONST_0:
case DCONST_1:
this.push(DOUBLE);
return;
case IALOAD:
this.pop();
this.pop();
this.push(INT);
return;
case LALOAD:
this.pop();
this.pop();
this.push(LONG);
return;
case FALOAD:
this.pop();
this.pop();
this.push(FLOAT);
return;
case DALOAD:
this.pop();
this.pop();
this.push(DOUBLE);
return;
case AALOAD:
this.pop();
this.pop();
this.push(TOP);
return;
case BALOAD:
this.pop();
this.pop();
this.push(BYTE);
return;
case CALOAD:
this.pop();
this.pop();
this.push(CHAR);
return;
case SALOAD:
this.pop();
this.pop();
this.push(SHORT);
return;
case IASTORE:
this.pop();
this.pop();
this.pop();
return;
case LASTORE:
this.pop();
this.pop();
this.pop();
return;
case FASTORE:
this.pop();
this.pop();
this.pop();
return;
case DASTORE:
this.pop();
this.pop();
this.pop();
return;
case AASTORE:
this.pop();
this.pop();
this.pop();
return;
case BASTORE:
this.pop();
this.pop();
this.pop();
return;
case CASTORE:
this.pop();
this.pop();
this.pop();
return;
case SASTORE:
this.pop();
this.pop();
this.pop();
return;
case POP:
this.pop();
return;
case POP2:
this.pop();
this.pop();
return;
case DUP:
{
this.actualStackCount++;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount]=this.stack[this.stackCount - 1];
this.stackCount++;
return;
}
case DUP_X1:
{
this.actualStackCount++;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount]=this.stack[this.stackCount - 1];
this.stack[this.stackCount - 1]=this.stack[this.stackCount - 2];
this.stack[this.stackCount - 2]=this.stack[this.stackCount];
this.stackCount++;
return;
}
case DUP_X2:
{
this.actualStackCount++;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount]=this.stack[this.stackCount - 1];
this.stack[this.stackCount - 1]=this.stack[this.stackCount - 2];
this.stack[this.stackCount - 2]=this.stack[this.stackCount - 3];
this.stack[this.stackCount - 3]=this.stack[this.stackCount];
this.stackCount++;
return;
}
case DUP2:
{
Object o=this.stack[this.stackCount - 1];
if (o == LONG || o == DOUBLE) {
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount++]=o;
return;
}
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 2);
this.stack[this.stackCount]=this.stack[this.stackCount - 2];
this.stack[this.stackCount + 1]=this.stack[this.stackCount - 1];
this.stackCount+=2;
return;
}
case DUP2_X1:
{
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 2);
this.stack[this.stackCount]=this.stack[this.stackCount - 3];
this.stack[this.stackCount + 1]=this.stack[this.stackCount - 2];
this.stackCount+=2;
return;
}
case DUP2_X2:
{
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 2);
this.stack[this.stackCount]=this.stack[this.stackCount - 4];
this.stack[this.stackCount + 1]=this.stack[this.stackCount - 3];
this.stackCount+=2;
return;
}
case SWAP:
{
Object o=this.stack[this.stackCount - 1];
this.stack[this.stackCount - 1]=this.stack[this.stackCount - 2];
this.stack[this.stackCount - 2]=o;
return;
}
case IADD:
case ISUB:
case IMUL:
case IDIV:
case IREM:
case ISHL:
case ISHR:
case IUSHR:
case IAND:
case IOR:
case IXOR:
this.pop();
return;
case LADD:
case LSUB:
case LMUL:
case LDIV:
case LREM:
case LSHL:
case LSHR:
case LUSHR:
case LAND:
case LOR:
case LXOR:
this.pop();
return;
case FADD:
case FSUB:
case FMUL:
case FDIV:
case FREM:
this.pop();
return;
case DADD:
case DSUB:
case DMUL:
case DDIV:
case DREM:
this.pop();
return;
case INEG:
case LNEG:
case FNEG:
case DNEG:
return;
case L2I:
case F2I:
case D2I:
this.pop();
this.push(INT);
return;
case I2L:
case F2L:
case D2L:
this.pop();
this.push(LONG);
return;
case I2F:
case L2F:
case D2F:
this.pop();
this.push(FLOAT);
return;
case I2D:
case L2D:
case F2D:
this.pop();
this.push(DOUBLE);
return;
case I2B:
this.pop();
this.push(BYTE);
return;
case I2C:
this.pop();
this.push(CHAR);
return;
case I2S:
this.pop();
this.push(SHORT);
return;
case LCMP:
case FCMPL:
case FCMPG:
case DCMPL:
case DCMPG:
this.pop();
this.pop();
this.push(INT);
return;
case IRETURN:
case LRETURN:
case FRETURN:
case DRETURN:
case ARETURN:
this.pop();
return;
case RETURN:
return;
case ARRAYLENGTH:
this.pop();
this.push(INT);
return;
case ATHROW:
case MONITORENTER:
case MONITOREXIT:
case TABLESWITCH:
case LOOKUPSWITCH:
this.pop();
return;
}
}

Fixed version (ground truth):
public void visitInsn(int opcode) throws BytecodeException {
switch (opcode) {
case NOP:
    return;
case ACONST_NULL:
  this.push(NULL);
return;
case ICONST_M1:
case ICONST_0:
case ICONST_1:
case ICONST_2:
case ICONST_3:
case ICONST_4:
case ICONST_5:
this.push(INT);
return;
case LCONST_M1:
case LCONST_0:
case LCONST_1:
this.push(LONG);
return;
case FCONST_0:
case FCONST_1:
case FCONST_2:
this.push(FLOAT);
return;
case DCONST_0:
case DCONST_1:
this.push(DOUBLE);
return;
case IALOAD:
this.pop();
this.pop();
this.push(INT);
return;
case LALOAD:
this.pop();
this.pop();
this.push(LONG);
return;
case FALOAD:
this.pop();
this.pop();
this.push(FLOAT);
return;
case DALOAD:
this.pop();
this.pop();
this.push(DOUBLE);
return;
case AALOAD:
this.pop();
this.pop();
this.push(TOP);
return;
case BALOAD:
this.pop();
this.pop();
this.push(BYTE);
return;
case CALOAD:
this.pop();
this.pop();
this.push(CHAR);
return;
case SALOAD:
this.pop();
this.pop();
this.push(SHORT);
return;
case IASTORE:
this.pop();
this.pop();
this.pop();
return;
case LASTORE:
this.pop();
this.pop();
this.pop();
return;
case FASTORE:
this.pop();
this.pop();
this.pop();
return;
case DASTORE:
this.pop();
this.pop();
this.pop();
return;
case AASTORE:
this.pop();
this.pop();
this.pop();
return;
case BASTORE:
this.pop();
this.pop();
this.pop();
return;
case CASTORE:
this.pop();
this.pop();
this.pop();
return;
case SASTORE:
this.pop();
this.pop();
this.pop();
return;
case POP:
this.pop();
return;
case POP2:
this.pop();
this.pop();
return;
case DUP:
{
this.actualStackCount++;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount]=this.stack[this.stackCount - 1];
this.stackCount++;
return;
}
case DUP_X1:
{
this.actualStackCount++;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount]=this.stack[this.stackCount - 1];
this.stack[this.stackCount - 1]=this.stack[this.stackCount - 2];
this.stack[this.stackCount - 2]=this.stack[this.stackCount];
this.stackCount++;
return;
}
case DUP_X2:
{
this.actualStackCount++;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount]=this.stack[this.stackCount - 1];
this.stack[this.stackCount - 1]=this.stack[this.stackCount - 2];
this.stack[this.stackCount - 2]=this.stack[this.stackCount - 3];
this.stack[this.stackCount - 3]=this.stack[this.stackCount];
this.stackCount++;
return;
}
case DUP2:
{
Object o=this.stack[this.stackCount - 1];
if (o == LONG || o == DOUBLE) {
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 1);
this.stack[this.stackCount++]=o;
return;
}
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 2);
this.stack[this.stackCount]=this.stack[this.stackCount - 2];
this.stack[this.stackCount + 1]=this.stack[this.stackCount - 1];
this.stackCount+=2;
return;
}
case DUP2_X1:
{
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 2);
this.stack[this.stackCount]=this.stack[this.stackCount - 3];
this.stack[this.stackCount + 1]=this.stack[this.stackCount - 2];
this.stackCount+=2;
return;
}
case DUP2_X2:
{
this.actualStackCount+=2;
this.ensureStack(this.stackCount + 2);
this.stack[this.stackCount]=this.stack[this.stackCount - 4];
this.stack[this.stackCount + 1]=this.stack[this.stackCount - 3];
this.stackCount+=2;
return;
}
case SWAP:
{
Object o=this.stack[this.stackCount - 1];
this.stack[this.stackCount - 1]=this.stack[this.stackCount - 2];
this.stack[this.stackCount - 2]=o;
return;
}
case IADD:
case ISUB:
case IMUL:
case IDIV:
case IREM:
case ISHL:
case ISHR:
case IUSHR:
case IAND:
case IOR:
case IXOR:
this.pop();
return;
case LADD:
case LSUB:
case LMUL:
case LDIV:
case LREM:
case LSHL:
case LSHR:
case LUSHR:
case LAND:
case LOR:
case LXOR:
this.pop();
return;
case FADD:
case FSUB:
case FMUL:
case FDIV:
case FREM:
this.pop();
return;
case DADD:
case DSUB:
case DMUL:
case DDIV:
case DREM:
this.pop();
return;
case INEG:
case LNEG:
case FNEG:
case DNEG:
return;
case L2I:
case F2I:
case D2I:
this.pop();
this.push(INT);
return;
case I2L:
case F2L:
case D2L:
this.pop();
this.push(LONG);
return;
case I2F:
case L2F:
case D2F:
this.pop();
this.push(FLOAT);
return;
case I2D:
case L2D:
case F2D:
this.pop();
this.push(DOUBLE);
return;
case I2B:
this.pop();
this.push(BYTE);
return;
case I2C:
this.pop();
this.push(CHAR);
return;
case I2S:
this.pop();
this.push(SHORT);
return;
case LCMP:
case FCMPL:
case FCMPG:
case DCMPL:
case DCMPG:
this.pop();
this.pop();
this.push(INT);
return;
case IRETURN:
case LRETURN:
case FRETURN:
case DRETURN:
case ARETURN:
this.stackCount=this.actualStackCount=0;
return;
case RETURN:
return;
case ARRAYLENGTH:
this.pop();
this.push(INT);
return;
case ATHROW:
case MONITORENTER:
case MONITOREXIT:
case TABLESWITCH:
case LOOKUPSWITCH:
this.pop();
return;
}
}