úÎ 5,bĄ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą From SMRep Ē From SMRep Ģ From SMRep $This is currently always True since  i'(m not sure how to get at the CPP define  "" (or equiv) to tell. Ī5Given a data constructor in the heap, find its Name. D The info tables for data constructors have a field which records D the source name of the constructor as a Ptr Word8 (UTF-8 encoded  string). The format is: Package:Module.Name ,We use this string to lookup the interpreter'&s internal representation of the name  using the lookupOrig.       L !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abL`ab_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! LH_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abc. cdefcefdcdef ĨNeeded since i don't know of a way  to go  a -> HValue directly (unsafeCoercing  directly doesn't work (i tried)). j To assist in " rendering"  the graph to some source. ‰Suck up a. ŠStop after a given depth. ‹Doesn't really work like you'd want it to.  Working on this, but there's a slight chance that getting # it to work as one would expect isn't possible given the ' ever-so small hook that GHC gives us ( unpackClosure#). < (Just so that the possibility of impossibility is stated). • An example Draw –Build a map to  (preds,succs) ĶTurn  undefined) into the the exception value it throws. This is in part borrowed from RtClosureInspect.getClosureData. §-Walk the reachable heap (sub)graph rooted at a,  and collect it as a graph of HNodes in H' s state. ĻTurn the root into an HValue to start off. Đ Add this HValue to the graph, then  add it' s successor's not already seen, and  return the HNodeId's of these newly-seen nodes  (which we've added to the graph in H' s state). . CURRENTLY GHC COERCES UNPOINTED CLOSURES TO  HVALUE#, which is a bug in the sense that 6 unpointed closures cannot be entered, which HValues  can. ; ghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ @„€‚ƒ—‰Š‹ŒŽ…†‡ˆ‘’“jklmnghi”•–opqrstvuwxyz{|}~z{|}~žŸœ ˜™š› :ghihijklmnklmnopqrspqrstvuwxyz{|}~z{|}~uvwxyz{|}~€‚ƒ€‚ƒ„…†‡ˆ†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Š      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijjkllmnoppqrstuvwxyz{|}~€‚ƒ„„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§Ļ vacuum-0.0.94GHC.Vacuum.InternalGHC.Vacuum.ClosureTypeGHC.Vacuum.Dot GHC.VacuumItblCodeSunS StgInfoTableptrsnptrstipesrtlencodeHalfWordHValue wORD_SIZEhALF_WORD_SIZEghciTablesNextToCodegetgetssetiomodifyrunSdataConInfoPtrToNames ClosureType WHITEHOLECATCH_STM_FRAMECATCH_RETRY_FRAMEATOMICALLY_FRAME TREC_HEADER TREC_CHUNKTVARATOMIC_INVARIANTINVARIANT_CHECK_QUEUETVAR_WATCH_QUEUE REMOTE_REFRBH FETCH_ME_BQFETCH_ME BLOCKED_FETCHTSO STABLE_NAMEWEAK MUT_VAR_DIRTY MUT_VAR_CLEANMUT_ARR_PTRS_FROZENMUT_ARR_PTRS_FROZEN0MUT_ARR_PTRS_DIRTYMUT_ARR_PTRS_CLEAN ARR_WORDS MVAR_DIRTY MVAR_CLEANSE_CAF_BLACKHOLE SE_BLACKHOLE BLACKHOLE CAF_BLACKHOLE STOP_FRAME CATCH_FRAME UPDATE_FRAMERET_FUNRET_DYNRET_BIG RET_SMALLRET_BCO IND_STATICIND_OLDGEN_PERMIND_PERM IND_OLDGENINDAP_STACKPAPAPBCOTHUNK_SELECTOR THUNK_STATIC THUNK_0_2 THUNK_1_1 THUNK_2_0 THUNK_0_1 THUNK_1_0THUNK FUN_STATICFUN_0_2FUN_1_1FUN_2_0FUN_0_1FUN_1_0FUNCONSTR_NOCAF_STATIC CONSTR_STATIC CONSTR_0_2 CONSTR_1_1 CONSTR_2_0 CONSTR_0_1 CONSTR_1_0CONSTRINVALID_OBJECTisFunisThunkisCon graphToDotgStyleppGraphppEdgeGunGDrawmkVmkEsuccsClosureclosPtrsclosLitsclosITabInfoTab OtherInfoConInfoitabPkgitabModitabConitabPtrsitabLitsitabType itabSrtLenitabCodeHNodenodePtrsnodeLitsnodeInfoHNodeId ShowHNode showHNode externHNodevacuumvacuumTo vacuumLazydumpdumpTodumpLazy toAdjList nameGraph showHNodesppHsppDotdraw printDrawsplit emptyHNodenodePkgnodeModnodeNameitabName getInfoPtr getClosure closureType getInfoTab peekInfoTabStgWordWordOffByteOffb2sBoxdefineddumpHrootHnodeH