[Vm-dev] #becomeUncompact not longer works in Cog/Stack VMs

Eliot Miranda eliot.miranda at gmail.com
Sun May 8 04:54:08 UTC 2011


On Sat, May 7, 2011 at 7:15 AM, Andreas Raab <andreas.raab at gmx.de> wrote:

>
> On 5/7/2011 9:25, Tobias Pape wrote:
>
>> No.  It does /not/ need to be fixed.  As I said earlier it is *absurd* to
>>> throw away performance for the ability to change certain classes to become
>>> uncompact.
>>>
>> When it worked in pre-cog VMs, why should it break in Cog?
>>
>
> Because Cog is all about performance. And there's a big performance
> difference for some classes when they are changed to be non-compact and
> Eliot didn't want to add the complexity it would take to support both a fast
> compact, and a slow non-compact version of the code. Therefore, some classes
> cannot be made non-compact in Cog, and that is a perfectly good tradeoff. If
> you really need these classes to be non-compact (please remind me why
> exactly that would matter to you) then use the interpreter. In order to get
> performance some trade-offs are necessary and this is one of them.
>

Thank you Andreas.  Exactly.  Determining the class of an instance of a
compact class is faster than determining the class of an instance of a
non-compact class if the compact class index is known.  So in asking "is the
receiver a LargeInteger" or "is the receiver a Float" in the VM is
significantly faster if the compact class index is a constant.  If we
introduce the in-practice unused facility to allow all classes to become
uncompact we lose this performance advantage.  I do not see the point of
losing performance to support unused or useless functionality.



> Cheers,
>  - Andreas
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110507/801be1c5/attachment.htm


More information about the Vm-dev mailing list