Fast generic function dispatch without calling `compile' at runtime
* module/oop/goops.scm: Rewrite generic function dispatch to use chained
closures instead of compiling specific dispatch procedures. The big
speed win before was not allocating rest arguments, which we gain by
simply pre-generating dispatchers for arities of up to 20 arguments.
Also now a tail call without reshuffling arguments -- which is what
dispatch now is -- is just a (mov 0 new-procedure) and (tail-call),
which is pretty cheap.
(%invalidate-method-cache!): Use the new
recompute-generic-function-dispatch-procedure!.
(arity-case, multiple-arity-dispatcher, single-arity-dispatcher)
(single-arity-cache-dispatch)
(compute-generic-function-dispatch-procedure)
(recompute-generic-function-dispatch-procedure!): New internal
interfaces.
(memoize-effective-method!): Update for new interfaces.
(memoize-generic-function-application!): Rename from `memoize-method!'.