Hi,
Stefan Israelsson Tampe <[email protected]> writes:
> #include "cfkn.h"
> #define LOCAL_REF(i) fp[i]
> #define LOCAL_SET(i,v) fp[i] = (v)
> void cfkn3676(SCM *fp, SCM **spp)
> {
> /* setup of environment */
> SCM *objects, *free, program, *sp, sss[100];
> sp = sss;
> program = fp[-1];
> objects = SCM_I_VECTOR_WELTS (SCM_PROGRAM_OBJTABLE (program));
> free = SCM_PROGRAM_FREE_VARIABLES(program);
> /* compiled section */
> LCASE3666:
>
>
> goto L3668;
> LCASE3665:
> sp++; *sp = LOCAL_REF(1);
> sp++; *sp = SCM_I_MAKINUM(0);
> sp-=2; if(!scm_is_eq(sp[1],sp[2])) goto L3669;
> sp++; *sp = LOCAL_REF(2);
[...]
Comparing this to the VM’s bytecode interpreter should show the overhead
incurred by instruction dispatch.
Did you try to measure this? That’d be interesting.
Thanks,
Ludo’.