[m-dev.] Bug #309

Mark Brown mark at mercurylang.org
Wed Jan 22 15:15:36 AEDT 2014


On Wed, Jan 22, 2014 at 2:18 PM, Paul Bone <paul at bone.id.au> wrote:
> Another idea I had was to turn an exist_cast HLDS goal of something like io
> or store(S) into an assignment from NULL (eg: "MR_r3 = NULL"[0]) rather than
> an assignment from where-ever we thought that store(S) or io was stored.

Yes, this is also correct.

> NULL is just as good as junk but it has the benefit of being a 'cached'
> value (as far as the LLDS is concerned), this means that if all it's
> locations get clobbered that we can generate a new value for it from the
> constant NULL.  No stack slot or temporary register is required.  This is
> not an improvement on your suggestion above, it's just easier.

NULL won't point to the heap, hence won't cause Boehm to hang onto any
further garbage. So I think your solution is probably better. :-)

Cheers,
Mark.



More information about the developers mailing list