Andy Wingo <wi...@pobox.com> skribis: > * libguile/vm-engine.h: > * libguile/vm-engine.c: Fold vm-engine.h into vm-engine.c. > > * libguile/Makefile.am: Adapt.
OK. > * libguile/vm-engine.c (CONS): Remove. Callers should use scm_cons > instead, syncing registers beforehand. > (POP_LIST): Adapt, only synchronizing once. > (POP_LIST_MARK, POP_CONS_MARK): Remove unused macros. > > * libguile/vm-i-scheme.c (cons): > * libguile/vm-i-system.c (push-rest, bind-rest): Adapt. OK. > -/* A fast CONS. This has to be fast since its used, for instance, by > - POP_LIST when fetching a function's argument list. Note: `scm_cell' is an > - inlined function in Guile 1.7. Unfortunately, it calls > - `scm_gc_for_newcell ()' which is _not_ inlined and allocated cells on the > - heap. XXX */ Prehistory! > * libguile/vm-engine.c: Some very minor cleanups: indenting, use of > VM_ASSERT, commenting. OK. > * libguile/vm-engine.c: Remove the ability for the VM to check object > access, free variable access, and the ip. They were off by default. > Since they will be different in the RTL VM, their presence is just > making things confusing. > > * libguile/vm.c: Remove corresponding error helpers. OK. > * libguile/vm-engine.c: Remove the register assignments inherited from > the 1990s. GCC does seem to allocate reasonably on systems with > enough registers (e.g. x86-64), and on system with too few (x86-32) we > disabled manual allocation. Anyway this code was never tested, so > it's better to leave the compiler to do its own thing, until proven > otherwise. Also in the RTL VM we don't need to allocate a register to > the SP, because it isn't accessed as much. It was not “never tested”, but yeah. :-) Setting JT_REG (which this patch keeps) does have an impact: http://lists.gnu.org/archive/html/guile-devel/2011-07/msg00027.html Also s/x86-32/IA32/, to avoid confusion with x32 (what a mess!). Ludo’.