ghc-heap-view 0.5.3 → 0.5.4
raw patch · 3 files changed
+21/−6 lines, 3 filesdep ~basePVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- cbits/HeapView.c +1/−0
- ghc-heap-view.cabal +2/−2
- src/GHC/HeapView.hs +18/−4
cbits/HeapView.c view
@@ -247,6 +247,7 @@ case MUT_VAR_CLEAN: ptrs[nptrs++] = ((StgMutVar *)closure)->var; break;+ case MVAR_DIRTY: case MVAR_CLEAN: ptrs[nptrs++] = (StgClosure *)((StgMVar *)closure)->head; ptrs[nptrs++] = (StgClosure *)((StgMVar *)closure)->tail;
ghc-heap-view.cabal view
@@ -1,5 +1,5 @@ Name: ghc-heap-view-Version: 0.5.3+Version: 0.5.4 Synopsis: Extract the heap representation of Haskell values and thunks Description: This library provides functions to introspect the Haskell heap, for example@@ -64,7 +64,7 @@ GHC.Disassembler GHC.HeapView.Debug Build-depends:- base >= 4.5 && < 4.8,+ base >= 4.5 && < 4.9, containers, transformers, template-haskell,
src/GHC/HeapView.hs view
@@ -560,6 +560,8 @@ AP -> do unless (length ptrs >= 1) $ fail "Expected at least 1 ptr argument to AP"+ unless (length wds >= 3) $+ fail "Expected at least 3 raw words to AP" return $ APClosure itbl (fromIntegral $ wds !! 2) (fromIntegral $ shiftR (wds !! 2) (wORD_SIZE_IN_BITS `div` 2))@@ -568,6 +570,8 @@ PAP -> do unless (length ptrs >= 1) $ fail "Expected at least 1 ptr argument to PAP"+ unless (length wds >= 3) $+ fail "Expected at least 3 raw words to AP" return $ PAPClosure itbl (fromIntegral $ wds !! 2) (fromIntegral $ shiftR (wds !! 2) (wORD_SIZE_IN_BITS `div` 2))@@ -596,22 +600,32 @@ fail "Expected at least 1 ptr argument to BLACKHOLE" return $ BlackholeClosure itbl (head ptrs) - BCO ->+ BCO -> do+ unless (length ptrs >= 3) $+ fail $ "Expected at least 3 ptr argument to BCO, found " ++ show (length ptrs)+ unless (length wds >= 6) $+ fail $ "Expected at least 6 words to BCO, found " ++ show (length wds) return $ BCOClosure itbl (ptrs !! 0) (ptrs !! 1) (ptrs !! 2) (fromIntegral $ wds !! 4) (fromIntegral $ shiftR (wds !! 4) (wORD_SIZE_IN_BITS `div` 2)) (wds !! 5) - ARR_WORDS ->+ ARR_WORDS -> do+ unless (length wds >= 2) $+ fail $ "Expected at least 2 words to ARR_WORDS, found " ++ show (length wds) return $ ArrWordsClosure itbl (wds !! 1) (drop 2 wds) - t | t == MUT_ARR_PTRS_FROZEN || t == MUT_ARR_PTRS_FROZEN0 ->+ t | t == MUT_ARR_PTRS_FROZEN || t == MUT_ARR_PTRS_FROZEN0 -> do+ unless (length wds >= 3) $+ fail $ "Expected at least 3 words to MUT_ARR_PTRS_FROZEN0 found " ++ show (length wds) return $ MutArrClosure itbl (wds !! 1) (wds !! 2) ptrs t | t == MUT_VAR_CLEAN || t == MUT_VAR_DIRTY -> return $ MutVarClosure itbl (head ptrs) - t | t == MVAR_CLEAN || t == MVAR_DIRTY ->+ t | t == MVAR_CLEAN || t == MVAR_DIRTY -> do+ unless (length ptrs >= 3) $+ fail $ "Expected at least 3 ptrs to MVAR, found " ++ show (length ptrs) return $ MVarClosure itbl (ptrs !! 0) (ptrs !! 1) (ptrs !! 2) BLOCKING_QUEUE ->