Locations in the codegen where we assume pointers tagged with certain values?

Ömer Sinan Ağacan omeragacan at gmail.com
Sat Apr 27 14:51:59 UTC 2019


> Also, did you check that the tag we apply to the closure pointer matches the
> tag that the info table defines?

Yep, see my update in the Gitlab issue.

Ömer

Ben Gamari <ben at smart-cactus.org>, 27 Nis 2019 Cmt, 16:51 tarihinde şunu yazdı:
>
> Ömer Sinan Ağacan <omeragacan at gmail.com> writes:
>
> > Hi all,
> >
> > I'm trying to find all places in the code generator where we assume that a
> > pointer is tagged with a certain value. A generated code for this looks like
> > this:
> >
> >     mov    0x6(%rbx),%rax
> >
> > This moves payload[0] of the closure in %rbx to %rax, but it assumes that %rbx
> > is tagged with 2 so it does 0x6(%rbx) instead of 0x8(%rbx).
> >
> > Anyone know where I should be looking at?
> >
> I would start by looking at uses of tagForCon, lfDynTag and mkTaggedObjectLoad.
>
> Also, did you check that the tag we apply to the closure pointer matches
> the tag that the info table defines?
>
> Cheers,
>
> - Ben


More information about the ghc-devs mailing list