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

Andreas Raab andreas.raab at gmx.de
Sun May 8 08:24:58 UTC 2011


On 5/8/2011 8:38, Tobias Pape wrote:
> Am 2011-05-07 um 16:15 schrieb Andreas Raab:
>> 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)
> Only two versions of object headers.
> not three.

But why? If your argument is that two object headers make the VM 
simpler, then my response is: Go use the interpreter. It's *much* 
simpler than the JIT and if your goal is conceptual simplicity, then the 
JIT clearly isn't for you. A JIT by its very nature must make some 
tradeoffs in order to perform better and if you don't like the tradeoffs 
you'll have difficulties to actually get the performance you're looking for.

Cheers,
   - Andreas


>> then use the interpreter. In order to get performance some trade-offs are necessary and this is one of them.
>>
>> Cheers,
>>   - Andreas
>>
>
> So Long,
> 	-Tobias


More information about the Vm-dev mailing list