[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