On Sep-15, Leopold Toetsch wrote: > Steve Fink <[EMAIL PROTECTED]> wrote: > > I'm not sure how to use the current pdd03's calling conventions to > > implement what I want right now. Let's consider Perl6: > > First, that whole stuff definitely needs more clarification. Calling and > return conventions are not symmetrical, C<I1> (number of items in C<P3>) > is redundant... And we probably need pdd03-examples.pod. > > > sub f ($a, $b) { ... } > > f(1, 2); > > &f(1, 2); > > > I0 = 1 # have prototype > > I5 = 1 > > I6 = 2 > > As the sub doesn't specify taking C<int>, arguments would go into P5 and > P6.
Uh, right. I think I meant sub f (int $a, int $b) { ... }. But you get the point. > > It would be tempting to change all pushtop,pushbottom,poptop,popbottom > > ops into ones that had the start register and number of registers as > > arguments. > > No. These ops are used to save registers for the caller and not for > argument passing. Yes, I know -- but if we made the suggested change, then they could be used for both. (Only when needed -- normally, they'd just be used for caller-save stuff, it's only in complicated situations where we'd use them for dynamic register numbering.) > > sub f($a, $b, $c, $d) { ... } > > f(1, [EMAIL PROTECTED], [EMAIL PROTECTED], [EMAIL PROTECTED], @array); > > I would at least expect a compiler warning: "Suboptimal argument passing > detected in function call ...". This sounds like the beginning of a whole set of things like "Warning #238: suboptimal implementation of xxx. Are you sure you know what you are doing?"