StgTSOBlockInfo should be a tagged union
currently, `tso->block_info`, which is the `StgTSOBlockInfo` type, is a word-sized union, that may be used to store either a closure, or a malloc'ed pointer or an integer. this looks horrific to me, because we need to handle `tso->block_info` in many places in the rts, there's no runtime type-info so we always need to make educated guesses based on the context. this is undesired cognitive burden when maintaining RTS, and there do exist cases where we actually miss it and cause real memory corruption! (#26716)
so, i believe `StgTSOBlockInfo` should be a tagged union that makes it obvious what the payload really mean. this would help us to make less guesses (and less mistakes) in the rts codebase.
issue