Hi Stefan,<br><br><div class="gmail_quote">On Wed, Dec 7, 2011 at 4:09 PM, Stefan Marr <span dir="ltr">&lt;<a href="mailto:squeak@stefan-marr.de">squeak@stefan-marr.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Hi:<br>
<br>
>From the current implementation, which I find in the interpreter, and from testing on Cog I assume that primitive 83, that is &#39;perform:&#39;, does easily handle an arbitrary number of parameters.<br>
<br>
Is that correct, or does for instance Cog do something else? (it does not seem so)<br></blockquote><div><br></div><div>That&#39;s correct. The primitive (InterpreterPrimitives&gt;&gt;primitivePerform) is written in terms of argumentCount and so should cope with any number of arguments up to the maximum (15 is the limit in CompiledMethod, 31 in the bytecode set I believe).</div>
<div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">I am just asking, because the number of parameters of the Object&gt;&gt;#perform:with: variants goes only up to three. And, the comment does not mention it. (at least in a recent Pharo image)<br>

<br>
Furthermore, I guess, there is an upper limit on the number of arguments with regard to frame size?<br></blockquote><div><br></div><div>Not in the StackVM or the Cog VM since these are running on a stack, not in a context, and so there&#39;s always plenty of headroom to push args on the stack during a perform.  At least the method/bytecode set&#39;s limit on argumentCount is going to bite before the stack size.  Similarly with perform:withArguments:, as long as the number of arguments is &lt;= LargeFrameSize (56 slots?) the primitive will push arguments.  Of course, the number of arguments must match the method that is found, and so the real limits are CompiledMethod&#39;s and the bytecode set&#39;s.</div>
<div><br></div><div>cheers,</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
Thanks<br>
Stefan<br>
<font color="#888888"><br>
--<br>
Stefan Marr<br>
Software Languages Lab<br>
Vrije Universiteit Brussel<br>
Pleinlaan 2 / B-1050 Brussels / Belgium<br>
<a href="http://soft.vub.ac.be/~smarr" target="_blank">http://soft.vub.ac.be/~smarr</a><br>
Phone: <a href="tel:%2B32%202%20629%202974" value="+3226292974">+32 2 629 2974</a><br>
Fax:   <a href="tel:%2B32%202%20629%203525" value="+3226293525">+32 2 629 3525</a><br>
<br>
</font></blockquote></div><br><br clear="all"><div><br></div>-- <br>best,<div>Eliot</div><br>