summaryrefslogtreecommitdiff
path: root/rts/Disassembler.c
diff options
context:
space:
mode:
authorÖmer Sinan Ağacan <omeragacan@gmail.com>2018-03-09 15:38:58 +0300
committerÖmer Sinan Ağacan <omeragacan@gmail.com>2018-03-10 09:59:45 +0300
commit8e3410134bd7419db638988d74fcc600b03e2a1a (patch)
tree0abad7378dc4701bdb2d0e27debfd9472e8787f9 /rts/Disassembler.c
parentdd3906bf5debdb74bb8e356cede7f6ac6d770007 (diff)
downloadhaskell-8e3410134bd7419db638988d74fcc600b03e2a1a.tar.gz
Fix a debug print in disassembler (#14905)
When interpreter is not profiled (see `interpreterProfiled` in `DynFlags`) bytecode generator generates a NULL pointer as the cost centre of a `BRK_FUN` instruction: let cc | interpreterProfiled dflags = cc_arr ! tick_no | otherwise = toRemotePtr nullPtr let breakInstr = BRK_FUN (fromIntegral tick_no) (getUnique this_mod) cc return $ breakInstr `consOL` code We now take this into account when disassembling `BRK_FUN`. Reviewers: bgamari, simonmar, erikd Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4490
Diffstat (limited to 'rts/Disassembler.c')
-rw-r--r--rts/Disassembler.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/rts/Disassembler.c b/rts/Disassembler.c
index 8c84e13ef3..01d6c3b1d9 100644
--- a/rts/Disassembler.c
+++ b/rts/Disassembler.c
@@ -68,7 +68,11 @@ disInstr ( StgBCO *bco, int pc )
case bci_BRK_FUN:
debugBelch ("BRK_FUN " ); printPtr( ptrs[instrs[pc]] );
debugBelch (" %d ", instrs[pc+1]); printPtr( ptrs[instrs[pc+2]] );
- debugBelch(" %s\n", ((CostCentre*)(literals[instrs[pc+3]]))->label);
+ CostCentre* cc = (CostCentre*)literals[instrs[pc+3]];
+ if (cc) {
+ debugBelch(" %s", cc->label);
+ }
+ debugBelch("\n");
pc += 4;
break;
case bci_SWIZZLE: