... | @@ -92,4 +92,4 @@ Compacting GC also uses tag bits, because it needs to distinguish between a heap |
... | @@ -92,4 +92,4 @@ Compacting GC also uses tag bits, because it needs to distinguish between a heap |
|
## Dealing with tags in the code
|
|
## Dealing with tags in the code
|
|
|
|
|
|
|
|
|
|
Every time we dereference a pointer to a heap object, we must first zero the tag bits. In the RTS, this is done with the macro `UNTAG_CLOSURE()`; in `.cmm` code this is done with the `UNTAG()` macro. Surprisingly few places needed untagging to be added. |
|
Every time we dereference a pointer to a heap object, we must first zero the tag bits. In the RTS, this is done with the macro (recently: inline function) `UNTAG_CLOSURE()`; in `.cmm` code this is done with the `UNTAG()` macro. Surprisingly few places needed untagging to be added. |