[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 01/10] inline vm-engine.h into vm-engine.c
From: |
Ludovic Courtès |
Subject: |
Re: [PATCH 01/10] inline vm-engine.h into vm-engine.c |
Date: |
Thu, 23 May 2013 23:28:23 +0200 |
User-agent: |
Gnus/5.130007 (Ma Gnus v0.7) Emacs/24.3 (gnu/linux) |
Andy Wingo <address@hidden> 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’.
- Add RTL VM, Andy Wingo, 2013/05/23
- [PATCH 01/10] inline vm-engine.h into vm-engine.c, Andy Wingo, 2013/05/23
- Re: [PATCH 01/10] inline vm-engine.h into vm-engine.c,
Ludovic Courtès <=
- [PATCH 03/10] minor vm-engine cleanups, Andy Wingo, 2013/05/23
- [PATCH 02/10] remove CONS macro in VM; use scm_cons instead, Andy Wingo, 2013/05/23
- [PATCH 04/10] remove some configurability in vm-engine, Andy Wingo, 2013/05/23
- [PATCH 05/10] vm-engine: remove register assignments, Andy Wingo, 2013/05/23
- [PATCH 06/10] Allow vm_engine caller to pass arguments on the stack., Andy Wingo, 2013/05/23
- [PATCH 08/10] cpp hygiene in the vm, Andy Wingo, 2013/05/23
- [PATCH 07/10] pop-continuation abort-continuation hooks pass return vals directly, Andy Wingo, 2013/05/23
- [PATCH 09/10] refactor to resolve_variable, Andy Wingo, 2013/05/23