On a minor note, re

   CALL_VTABLE_0(meth, interp, pmc)
   CALL_VTABLE_1(meth, interp, pmc, arg1)
   CALL_VTABLE_2(meth, interp, pmc, arg1, arg2)

I suggest reordering arguments to

   CALL_VTABLE_1(interp, meth, pmc, arg1)
or CALL_VTABLE_1(interp, pmc, meth, arg1)

Current parrot apis seem to all have the interpreter first, with the
(unfortunate?) exception of some Parrot_jit_* functions, which place
jit_info before it.  That gets us to (interp, meth, pmc, arg1).

The choice between (meth, pmc, arg1) and (pmc, meth, arg1) is related
to whether we will find it more natural to think in terms of
  a. multimethods (meth.(obj args)), or
  b. traditional hierarchical (obj.meth.(args)) or message
     passing (obj.(meth args)).

It seems to be simply a human factors choice.  The variable order
doesn't affect the macros, and seemingly has little effect on any
code manipulation tools.

A counter argument to all this might be if we expect to someday see a
CALL_VTABLE_METH_1(interp, pmc, arg1) macro, or a similar function,
and wish to minimize dissonance.

But whatever.  We can always fiddle later.  I wouldn't have mentioned
it if not for the opportunity to flag that the jit functions are using
a perhaps somewhat different argument convention.

Mitchell

Reply via email to