The invoke op is bothering me -- namely, it disturbs me that it implicitly operates on P0. I know that P0 is the correct register to use according to pdd03, but I dislike having it be implicit. The user is required to set the rest of the pdd03 conventions up manually, so I don't see any need for invoke to be different.
It isn't, though. You have to set up P0 just like all the other registers you're using. It's not like invoke makes you specify them either. (Though I could certainly see a case for a version that takes counts as parameters and sets up the I registers appropriately, for speed reasons)
And it makes it much more clear what registers are being used if you have to pass in a PMC as an argument.
So would anyone mind if I eliminated the zero-arg invoke op in favor of a one-arg invoke that takes a single PMC? (I may also have situations where I don't need to follow pdd03, and it would be more convenient to use a different register.)
Leave the zero-arg version in there, since the common case will be invoking routines that are conforming to the calling conventions, and thus have all the registers set up per PDD03. I fully expect anything with even a minimal amount of self-introspection will be rummaging around in that sub object, so having it in a fixed location will be the right thing.
I'm OK with a one-arg version, as long as it's made explicit in the docs that code that uses it makes no guarantees about the state of any of the registers.
--
Dan
--------------------------------------"it's like this"------------------- Dan Sugalski even samurai [EMAIL PROTECTED] have teddy bears and even teddy bears get drunk