disInstr ( StgBCO *bco, int pc )
{
int i;
+ StgWord16 instr;
StgWord16* instrs = (StgWord16*)(bco->instrs->payload);
StgArrWords* itbls_arr = bco->itbls;
StgInfoTable** itbls = (StgInfoTable**)(&itbls_arr->payload[0]);
- switch (instrs[pc++]) {
+ instr = instrs[pc++];
+ switch (instr) {
case bci_SWIZZLE:
debugBelch("SWIZZLE stkoff %d by %d\n",
instrs[pc], (signed int)instrs[pc+1]);
debugBelch("ALLOC_AP %d words\n", instrs[pc] );
pc += 1; break;
case bci_ALLOC_PAP:
- debugBelch("ALLOC_PAP %d words, %d arity\n",
+ debugBelch("ALLOC_PAP %d arity, %d words\n",
instrs[pc], instrs[pc+1] );
pc += 2; break;
case bci_MKAP:
debugBelch("MKAP %d words, %d stkoff\n", instrs[pc+1],
instrs[pc] );
pc += 2; break;
+ case bci_MKPAP:
+ debugBelch("MKPAP %d words, %d stkoff\n", instrs[pc+1],
+ instrs[pc] );
+ pc += 2; break;
case bci_UNPACK:
debugBelch("UNPACK %d\n", instrs[pc] );
pc += 1; break;
break;
default:
- barf("disInstr: unknown opcode");
+ barf("disInstr: unknown opcode %u", (unsigned int) instr);
}
return pc;
}