Dan Sugalski <[EMAIL PROTECTED]> wrote: > At 10:42 PM +0100 12/17/03, Leopold Toetsch wrote: >>While playing with calling threaded subs, I came along a thing which >>I think might be suboptimal: >>pdd03 states that the method PMC should go into P2. This doesn't >>really play with Perl5 <-> Perl6 interoperbility IMHO. Perl5 methods >>are plain subs, where the first param is the object.
> PDD 03 states that the *object* goes in P2. Yep, typo - sorry. > This works out just fine > with perl 5 style method calls, where the argument list doesn't > distinguish the object other than by position. What happens is that > when a perl 5 sub is called, @_ is a combination of P2 if it's > non-NULL, and the remaining PMC registers. It's slightly more work > for the perl 5 code generator to handle the check, but other than > that it shouldn't be a problem. That seems to indicate, that we have to expose the whole parameter passing to HLLs and that Perl5 (and probably other languages) can't use the builtin PIR shortcuts (or we have to provide both schemes depending on some pragma directive). Additionally to the test: isnull P2, no_object # must be set to NULL on non-method calls we would need 2 code paths: For leaf subs[1], one can use registers as is, one would need rearanging the param regs. And as outlined by Juergen it doesn't fit very well for calling NCI PMC class methods: We would need another signature letter to denote the object. That's of course all doable but is adding assymmetry to method calls, which I don't like much. [1] these just use P5..Pn as passed in. leo