Fixed uninitialised FunBind fun_tick field
[ghc-hetmet.git] / rts / Disassembler.c
index b084a29..f29cce2 100644 (file)
@@ -31,6 +31,7 @@ int
 disInstr ( StgBCO *bco, int pc )
 {
    int i;
+   StgWord16 instr;
 
    StgWord16*     instrs      = (StgWord16*)(bco->instrs->payload);
 
@@ -43,13 +44,14 @@ disInstr ( StgBCO *bco, int pc )
    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]);
          pc += 2; break;
       case bci_CCALL:
-         debugBelch("CCALL    marshaller at 0x%x\n", 
+         debugBelch("CCALL    marshaller at 0x%lx\n", 
                          literals[instrs[pc]] );
          pc += 1; break;
       case bci_STKCHECK: 
@@ -102,7 +104,7 @@ disInstr ( StgBCO *bco, int pc )
       case bci_PUSH_UBX:
          debugBelch("PUSH_UBX ");
          for (i = 0; i < instrs[pc+1]; i++) 
-            debugBelch("0x%x ", literals[i + instrs[pc]] );
+            debugBelch("0x%lx ", literals[i + instrs[pc]] );
          debugBelch("\n");
          pc += 2; break;
       case bci_PUSH_APPLY_N:
@@ -145,13 +147,17 @@ disInstr ( StgBCO *bco, int pc )
          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;
@@ -162,29 +168,29 @@ disInstr ( StgBCO *bco, int pc )
          pc += 2; break;
 
       case bci_TESTLT_I:
-         debugBelch("TESTLT_I  %d, fail to %d\n", literals[instrs[pc]],
+         debugBelch("TESTLT_I  %ld, fail to %d\n", literals[instrs[pc]],
                                                       instrs[pc+1]);
          pc += 2; break;
       case bci_TESTEQ_I:
-         debugBelch("TESTEQ_I  %d, fail to %d\n", literals[instrs[pc]],
+         debugBelch("TESTEQ_I  %ld, fail to %d\n", literals[instrs[pc]],
                                                       instrs[pc+1]);
          pc += 2; break;
 
       case bci_TESTLT_F:
-         debugBelch("TESTLT_F  %d, fail to %d\n", literals[instrs[pc]],
+         debugBelch("TESTLT_F  %ld, fail to %d\n", literals[instrs[pc]],
                                                       instrs[pc+1]);
          pc += 2; break;
       case bci_TESTEQ_F:
-         debugBelch("TESTEQ_F  %d, fail to %d\n", literals[instrs[pc]],
+         debugBelch("TESTEQ_F  %ld, fail to %d\n", literals[instrs[pc]],
                                                       instrs[pc+1]);
          pc += 2; break;
 
       case bci_TESTLT_D:
-         debugBelch("TESTLT_D  %d, fail to %d\n", literals[instrs[pc]],
+         debugBelch("TESTLT_D  %ld, fail to %d\n", literals[instrs[pc]],
                                                       instrs[pc+1]);
          pc += 2; break;
       case bci_TESTEQ_D:
-         debugBelch("TESTEQ_D  %d, fail to %d\n", literals[instrs[pc]],
+         debugBelch("TESTEQ_D  %ld, fail to %d\n", literals[instrs[pc]],
                                                       instrs[pc+1]);
          pc += 2; break;
 
@@ -230,7 +236,7 @@ disInstr ( StgBCO *bco, int pc )
         break;
 
       default:
-         barf("disInstr: unknown opcode");
+         barf("disInstr: unknown opcode %u", (unsigned int) instr);
    }
    return pc;
 }