cmp VTABLE & MULTI

François Perrad francois.perrad at gadz.org
Thu Oct 16 07:33:15 UTC 2008



Allison Randal a écrit :
> François Perrad wrote:
>>
>> Since ppd27mmd merge, this shortcut removes the ability to call the
>> specific Lua code (with the expected exception generation).
>>
>> Since r31890, it's fixed.
>> The VTABLE 'cmp' is overloaded in LuaNil PMC without the shortcut
>> presents in Default PMC. But it isn't the right place, I want overload
>> VTABLE 'cmp' in LuaAny, the abstract PMC of all Lua types. LuaAny PMC
>> contains some MULTI 'cmp' and it seems not possible (with current tool)
>> to define VTABLE and MULTI in the same file.
>> I think the tool/generator must be improved.
>
> It is possible to define VTABLE and MULTI in the same file, they are 
> parsed completely independently and don't conflict. Now, if you do 
> that, and your VTABLE 'cmp' doesn't call 
> 'Parrot_mmd_multi_dispatch_from_c_args' (maybe as the default after 
> checking some conditions), then the MULTI 'cmp's will never be called, 
> because the VTABLE one has priority over them.
>
> It sounds like LuaAny is the right place to define your custom VTABLE 
> 'cmp'. What was the error you encountered when you tried it?
>
You are right. The generator is OK.

François.

>> The shortcut in Default PMC looks like a premature optimization.
>> I suggest a VTABLE 'cmp' without the shortcut in Default PMC and
>> with the shortcut in Scalar PMC.
>
> It's an optimization that holds true for the majority of cases and 
> gave a significant speedup on PGE, which uses 'cmp' heavily. It's also 
> an optimization that's very easy to override, by sticking an alternate 
> VTABLE for 'cmp' anywhere in the inheritance hierarchy of a PMC.
>
> Allison
>
>
>
>



More information about the parrot-dev mailing list