[squeak-dev] Float hierarchy for 64-bit Spur

Eliot Miranda eliot.miranda at gmail.com
Fri Nov 21 18:47:38 UTC 2014

On Fri, Nov 21, 2014 at 10:36 AM, Bert Freudenberg <bert at freudenbergs.de>

> On 21.11.2014, at 19:25, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> In fact, I'm thinking that a 2 bit tag is probably better.  AFAIA, since I
> implemented 64-bit VisualWorks with a 3 bit tag no one has added any new
> immediate types.  Points don't have the necessary dynamic frequency and
> indeed points with floats may be very common in newer UI architectures.
> Making nil, true and false immediates doesn't have much benefit either;
> they're unique values, and unique addresses work just as well as
> immediates.  Essentially expanding the number of tagged types, and
> especially making the tagged type organization non-uniform (see e.g. Eliot
> Moss's VMs where nil, true, false have one organization, character has a
> another and SmallInteger another one still) makes the decode bloat, which
> slows down message send.  So I think for the moment I'll go with a 2 bit
> tag, giving us an even larger range for SmallDouble and SmallInteger, and
> keep the simple representation:
> immediates
> [62 bit value][2 bit tag]
> non-immediates
> [64 bit pointer (least 3 bits 0)] -> [8 bit slot count][2 gc bits][22 bit
> hash][3 gc bits][5 bit format][2 flag bits][22 bit class index]
> I don't think that one additional bit will be helpful to either SmallInts
> or SmallDoubles. But having it can make for nice VM experiments. I'd
> reserve it.

OK, less work too ;-)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20141121/ae5bb06e/attachment.htm

More information about the Squeak-dev mailing list