1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-18 02:00:20 +02:00
guile/oop/goops
Andy Wingo 5487977b1b runtime byte compilation of goops methods, whooooo
* ice-9/boot-9.scm (make-modules-in): Change to make sure that we are
  making modules in modules; that is, that a global binding of `compile'
  doesn't prevent a module from importing a submodule named `compile'.
  (resolve-module): Clean up a bit, and serialize the logic.

* libguile/objects.c (scm_mcache_lookup_cmethod, scm_apply_generic):
* libguile/eval.i.c (CEVAL): Now that cmethod entries can have a program
  as their tail instead of a memoized proc, we have to change the halting
  condition on the method cache search, in both places: the one that's
  inlined into eval.i.c and the one in objects.c. If the cmethod isn't a
  pair, apply it.

* libguile/goops.c (make): In the `make' procedure that's used before
  GOOPS is booted, bind #:formals, #:body, and #:compile-env on methods.

* oop/goops/compile.scm (compute-entry-with-cmethod): There was a
  terrible trick here that involved putting a dummy pair in the cache,
  then modifying it in place with the result of memoization. The note
  claimed that this was to cut recursion short, or something. I can't see
  how it could recurse, given that `methods' is changing each time. Also,
  the pair trick doesn't work with byte-compiled methods. So, remove it.
  (compile-method): Dispatch to the appropriate method compiler, based on
  whether the method was defined with the interpreter or with the
  compiler.
  (make-next-method): New function, generically computes a `next-method'
  procedure, though the caller has to supply the arguments.
  (compile-method/vm): Exciting method byte compiler!
  (make-make-next-method/memoizer, compile-method/memoizer): Add the
  /memoizer suffix, and move all this code to the bottom of the file.
2008-10-30 13:42:40 +01:00
..
accessors.scm defmacroize (oop goops accessors), (oop goops save) 2008-10-25 22:58:48 +02:00
active-slot.scm merge from 1.8 branch 2006-04-16 23:37:40 +00:00
compile.scm runtime byte compilation of goops methods, whooooo 2008-10-30 13:42:40 +01:00
composite-slot.scm merge from 1.8 branch 2006-04-16 23:37:40 +00:00
describe.scm Provide describe' feature in (oop goops describe)'. 2008-03-12 17:00:07 +00:00
dispatch.scm fix bug in self-tail-recursion with "external" variables; other sundries 2008-10-18 19:21:44 +02:00
internal.scm Changes from arch/CVS synchronization 2007-05-05 20:38:57 +00:00
Makefile.am merge from 1.8 branch 2006-04-16 23:37:40 +00:00
old-define-method.scm merge from 1.8 branch 2006-04-16 23:37:40 +00:00
save.scm defmacroize (oop goops accessors), (oop goops save) 2008-10-25 22:58:48 +02:00
simple.scm merge from 1.8 branch 2006-04-16 23:37:40 +00:00
stklos.scm merge from 1.8 branch 2006-04-16 23:37:40 +00:00
util.scm Use SRFI-1 in `(oop goops util)'. 2008-03-18 09:10:45 +00:00