[Pharo-project] is there an easy way to know the SmallInteger instances?

Eliot Miranda eliot.miranda at gmail.com
Mon Nov 22 00:10:07 CET 2010

On Sun, Nov 21, 2010 at 2:59 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

> On Sun, Nov 21, 2010 at 11:55 PM, Schwab,Wilhelm K <bschwab at anest.ufl.edu>wrote:
>> Mariano,
>> I see your point, but given the immediate object encoding tricks I'm not
>> sure it's possible.
> :(   It's a pity. Because most users should not be aware of this. This
> should be completly transparent for the developer.
>> Would the class methods #minVal and #maxVal be of any use to you?
> No :( Maybe it is better in this way: I want to know how many
> instances/temp var have a SmallInetger. This means, how many slots/words
> have a 1 in the last bit. This is what I understand by "Smallinteger
> instances".

That's the number of references to SmallInteger.  If all those slots contain
references to 0 then they're still referring to a single object.  The number
of instances of SmallInteger is SmallInteger maxVal - SmallInteger minVal +
1, period.  But they're virtual objects so they don't take any space; only
their references take space.  (IMO)

So you could implement
SmallInteger class>>instanceCount
    ^self maxVal - self minVal + 1

SmallInteger class>>allInstances
    ^self minVal to: self maxVal

you could implement the following but it's of academic interest only; it'll
take a long time on a 64-bit implementation ;)  If you add this then you
have to guard against it being invoked because shure as s**t someone will
wonder why the system isn't doing anything when they ask some apparently
reasonable question about instance counts...

SmallInteger class>>allInstancesDo: aBlock
    self minVal to: self maxVal do: aBlock


>> Bill
>> ________________________________________
>> From: pharo-project-bounces at lists.gforge.inria.fr [
>> pharo-project-bounces at lists.gforge.inria.fr] On Behalf Of Mariano
>> Martinez Peck [marianopeck at gmail.com]
>> Sent: Sunday, November 21, 2010 4:41 PM
>> To: Pharo Development
>> Subject: [Pharo-project] is there an easy way to know the SmallInteger
>>  instances?
>> If I do SmallInteger alIInstances I get an empty array, and of course,
>> with SmallInteger instanceCount I get zero.
>> Now, I can understand that from the VM point of view, but for the final
>> user, this should be polymorphic. For example, for instanceCount, I would
>> like to know all the "variable slots" that has a 1 in the last bit.
>> Is this already possible?   if true, which message?   if not, should I
>> hack in the vm and code a primitive that does this?
>> And the same for allInstances, if I can inspect  5, I should be also to
>> inspect  SmallInteger allInstances, and SmallInteger allInstances first,
>> etc....
>> thanks
>> Mariano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gforge.inria.fr/pipermail/pharo-project/attachments/20101121/4b5c3865/attachment.htm>

More information about the Pharo-project mailing list