... | ... | @@ -3,7 +3,7 @@ |
|
|
|
|
|
## General overview
|
|
|
|
|
|
When allocating a heap object, we bump `Hp` and compare to `HpLim`. If the test fails we branch to ???. Usually this code tests an interrupt flag (to see if execution should be brought tidily to a halt); grabs the next block of allocation space; makes `Hp` point to it and `HpLim` to its end; and returns. If there are no more allocation-space blocks, garbage collection is triggered.
|
|
|
When allocating a heap object, we bump `Hp` and compare to `HpLim`. If the test fails we branch to one of the helpers in `rts/HeapStackCheck.cmm`. Usually this code tests an interrupt flag (to see if execution should be brought tidily to a halt); grabs the next block of allocation space; makes `Hp` point to it and `HpLim` to its end; and returns. If there are no more allocation-space blocks, garbage collection is triggered.
|
|
|
|
|
|
Source files: [rts/HeapStackCheck.cmm](https://gitlab.haskell.org/ghc/ghc/blob/master/rts/HeapStackCheck.cmm)
|
|
|
|
... | ... | |