argument count

Jecel Assumpcao Jr jecel at
Wed May 8 23:13:50 UTC 2002

I was able to borrow an iBook to check out Self 4.1.5 yesterday (note - 
since I don't know how to set up the SELF_WORKING_DIR variable the 
droplet didn't work) and was interested in seeing how the new "argument 
count" bytecode was used. I does make an interpreter's life easier, but 
the code expansion is a bit too much. An interesting alternative would 
be to define the two remaining opcodes as "send1" and "selfSend1" and 
only use "argument count" for the rarer cases of two or more arguments.

One thing that seemed surprising to me was the direct evaluation order 
of the arguments, with the receiver ending up buried in the stack. I 
thought we used the reverse order with the receiver on top, so I 
checked in Self 4.0 and saw that it too used the direct order. In fact, 
my tinySelf 1 does too (as it had to, in order to work with Self 4.0 
images) so I obviously knew this a few years back. My tinySelf 0 parser 
did generate code to evaluate things in the reverse order but since it 
only read in sources and not snapshot I never noticed this mistake. I 
checked Craig Chambers' thesis but his single example of bytecodes only 
has unary messages and could be interpreted either way.

The simple embedded Self hardware I am designing (a 16 bit machine 
described in does 
evaluate arguments in the reverse order, so translating Self bytecodes 
to its native machine language will be a little more complicated than I 
had hoped. I have investigated alternative, such as the KMachine 
( which are a much 
better fit for the direct order evaluation but that will have to wait 
for a larger project than this one.

-- Jecel

More information about the Self-interest mailing list