[m-dev.] deleting tags_high

Zoltan Somogyi zoltan.somogyi at runbox.com
Thu Jun 14 23:35:31 AEST 2018


Currently we support three tag_methods:

- storing primary tags in the least significant 2 or 3 bits of a word,
  (tags_low)

- storing primary tags in the most significant N bits of a word, where
   N may be more than 3 (tags_high)

- not storing primary tags bits at all, distinguishing functors using
   tags stored in memory (tags_none).

I propose that we delete support for tags_high. We started with that
because we knew it worked, since it is the method that Prolog systems
have traditionally used. However, once we got tags_low working,
I don't think we ever used tags_high in anger more than once,
and that one occasion was for benchmarks to show that tags_low
was faster :-(

The motivation for raising this issue now this is that I don't want to
write code that adds mktag and unmktag unary operations to the
LLDS and MLDS code being generated, when I know that both are no-ops
unless someone selects tags_high. With my proposal, we should be able
to delete the mktag and unmktag unops; they should *never* be needed.

Any objections?

Zoltan.


More information about the developers mailing list