Regarding the function signatures in the vtable section: these should match 
the calling conventions in PDD 07.  I'm happy to patch them.

Regarding the mark vtable entry:

        This method does not have
        to call the "mark" method on any PMCs it marks--the DOD system
        takes care of that. (So no need to recurse into aggregate PMCs or
        anything of the sort).

I take this to mean that calling pobject_lives(INTERP, some_pobj) is 
sufficient, and will call the mark() vtable entry on some_pobj if it turns 
out to be a PMC (which I know it does).  I don't understand what "no need to 
recurse into aggregate PMCs" means though.

Within an array-like PMC's mark(), doesn't it have to mark each contained PMC 
appropriately?  Or does this parenthetical note mean something else?

(I'm aware of the special PObj flag which obviates this, but I don't trust it 
or like it.)

Regarding the set_bignum_int vtable entry: this is the only vtable entry so 
far that morphs in place (besides morph, of course).  This seems odd.

Regarding aggregate PMC vtable entries:

        The PMC* parameter is NULL if there is no
        key for that PMC; this means that that argument is unkeyed.

The PMCNULL/NULL isomorphism assumption bothers me.  Can this be PMCNULL 
instead?

Regarding the i_* versions of the math and bitwise vtable entries, it seems 
like the naming scheme is backwards.  All other vtable entries operate on the 
PMC in place.  The vtable entries that produce a destination PMC are the 
oddities here; perhaps they are the ones that need different names?

Regarding modulus and cmodulus, is it necessary to have both algorithms here?

Regarding the invoke vtable entry, there's no documentation for the next void 
pointer.

Regarding the Boolean PMC, the Python true and false are long gone.

-- c

Reply via email to