Confused about PAP object layout
Ben Gamari
ben at smart-cactus.org
Fri Feb 14 17:25:22 UTC 2020
Ömer Sinan Ağacan <omeragacan at gmail.com> writes:
> I think that makes sense, with the invariant that n_args <= bitmap_size. We
> evacuate the arguments used by the function but not others. Thanks.
>
> It's somewhat weird to see an object with useful stuff, then garbage, then
> useful stuff again in the heap, but that's not an issue by itself. For example
> if I have something like
>
> [pap_info, x, y, z]
>
> and according to the function `y` is dead, then after evacuating I get
>
> [pap_info, x, <garbage>, z]
>
> This "garbage" is evacuated again and again every time we evacuate this PAP.
>
I'm not sure what you mean by "garbage". The bitmap merely determines
whether a field is a pointer, not whether it is copied during
evacuation. A field's bitmap bit not being set merely means that we won't
evacuate the value of that field during scavenging.
Nevertheless, this all deserves a comment in scavenge_PAP.
Cheers,
- Ben
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20200214/82092d1e/attachment.sig>
More information about the ghc-devs
mailing list