[squeak-dev] Re: [Pharo-dev] What are immediate subclass and word variable subclass?

Eliot Miranda eliot.miranda at gmail.com
Wed Feb 17 21:46:42 UTC 2016


Hi Alexandre,

> On Feb 17, 2016, at 7:30 AM, Alexandre Bergel <alexandre.bergel at me.com> wrote:
> 
> Hi!
> 
> I have stumbled on:
> 
> Float immediateSubclass: #SmallFloat64
>    instanceVariableNames: ''
>    classVariableNames: ''
>    package: 'Kernel-Numbers’
> 
> 
> Float variableWordSubclass: #BoxedFloat64
>    instanceVariableNames: ''
>    classVariableNames: ''
>    package: 'Kernel-Numbers’
> 
> 
> What are immediate subclass and word variable?

Immediates are objects that are stored in an object pointer using a tag to distinguish them from ordinary object pointers.  In v3 the only immediate is SmallInteger.  In 32-but spur there are SmallInteger and Character.  An implication of this is that in spur all Characters can be compared using #==.  In 64-bit Spur there is also SmallFloat64.  If a float's exponent is in the middle 8-bits of the 11-bit exponent range then it will be immediate.  If a float's exponent is outside of the middle 8-bits it will be boxed.

Objects on the heap are either pointers or bits.  For example instances of Point, Array, BlockClosure etc are pointer objects.  But Bitmap, ByteString, WideString etc are bits objects.  In v3 bits objects are either a sequence of bytes (ByteArray, ByteString, ByteSymbol etc) or 32-bit words (WideString, Float, Bitmap etc).  Spur supports byte, short, word and double-word bits objects even though currently only byte and word classes exist.  16-bit strings will be useful on Windows, for example.

HTH


> Cheers,
> Alexandre

_,,,^..^,,,_ (phone)


More information about the Squeak-dev mailing list