Things start to get interesting. The first two vtable slots are gone. The dispatch for the C<bxor> PMC opcodes is now down fully per MMD.

The MMD_BXOR and MMD_BXOR_INT MMD slots are just adjacent entries in the function table. This is the simplest implementation and provides good cache locality for similar functions.

I think it's now time to review the code a bit and check if the whole concept is sane.

Interesting is the dispatch inside objects. These have a delegate vtable which runs a PASM function. But it could be redispatched before by installing an appropriate MMD version.

Finally we should probably rename the VTABLE_<function> macros to e.g.
DISPATCH_<function> which is either the current vtable call or the mmd_dispatch_<signature>(... ,MMD_<type>) function. --Or provide two sets of macros, i.e. have additionally MMD_DISPATCH_<function> macros?
See classes/ref.pmc for a current workaround and include/parrot/vtable.h for the current macros.


leo



Reply via email to