The type of an object is described by a header that can be encoded using 32 bits.
Its concrete representation is left unspecified;
however from such a header one can decide which
fields hold pointers and which hold integers.
Inductiveabort_msg : Type :=
| Abort_OOM(* no space left in the heap *)
| Abort_OCS(* overfull collector stack *)
| Abort_Spawn(* cannot spawn a new thread *)
| Abort_WB(* overfull bucket in write barrier *)
| Abort_RS(* overfull bucket in root scan *)
.