Subject: VM bytecodes

From: [email-masked] (Jorg-Cyril Hohle)
Date: Thu, 22 Jul 1999 03:43:30 +0200 (MET DST)

Hello,

all VM machines / bytecode interpreters I know have their own set of
instructionsrefelcting different design decisions and language
requirements.  CLISP has several opcodes for 2 or 3 instructions
combined into one such as CALL&JMPIF.  Other have opcodes for groups
of instructions such as MAKE-LAMBDA, which basically allocates two
related objects in one shot and fills them in, which would otherwise
require many opcodes.

I wonder whether in the old or recent history of CLISP somebody has
done a statistical distribution or a performance analysis on the
bytecodes, to see which bytecodes are worth to be combined into one or
if it was just a programmer's good feeling about one's choice, and
whether performance comparisons were done as well.

Really curious,
	Jorg Hohle.

---

From: Michael Stoll <[email-masked]>
Date: Mon, 26 Jul 1999 16:30:12 +0200

J"org H"ohle writes
>whether performance comparisons were done as well.

If I remember correctly, thge first set of bytecode instructions was
devised by Bruno, who wrote the first version of CLISP's compiler.
A little bit later, I did some analysis of the code the compiler
produced on some of the parts of CLISP that are written in LISP itself
(probably mainly the compiler itself). Based on that, we removed some
of the combined instructions that Bruno had introduced ans replaced
them with other ones. I think all later changes to the bytecode have
been less drastic, but I might be mistaken (I haven't followed the
evolution of the CLISP compiler that closely for some time). Maybe
Bruno can say something on the more recent parts of the development.

Best wishes,
             Michael Stoll