Memoized expressions are pairs, not SMOBs
authorAndy Wingo <wingo@pobox.com>
Sun, 27 Oct 2013 08:52:39 +0000 (09:52 +0100)
committerAndy Wingo <wingo@pobox.com>
Sun, 27 Oct 2013 08:52:39 +0000 (09:52 +0100)
commit0720f70ed7e9de2685409abfe4e2c0dd01f81b74
tree695650decf699cbb5b544fd9dec881adcfe56e47
parentc450b47723438ad9e517b02a45b577b7f7fd848b
Memoized expressions are pairs, not SMOBs

* libguile/memoize.c (MAKMEMO): Memoized objects are pairs now, not
  SMOBs.  This lets eval.scm destructure them more efficiently.
  (scm_print_memoized, scm_memoized_p, scm_memoized_expression_typecode)
  (scm_memoized_expression_data): Remove these interfaces.
  (unmemoize, scm_memoize_variable_access_x): Remove SMOB type checks.
  (scm_init_memoize): Remove SMOB type definition.

* libguile/memoize.h (scm_tc16_memoized, SCM_MEMOIZED_P)
  (scm_memoized_expression_typecode, scm_memoized_expression_data)
  (scm_memoized_p): Remove declarations.

* libguile/validate.h (SCM_VALIDATE_MEMOIZED): Remove declaration.

* libguile/eval.c (eval): Remove memoized type check, and inline the
  inum unpacking.

* module/ice-9/eval.scm (memoized-expression-case): Use car and cdr to
  destructure memoized expressions.  A big win!
libguile/eval.c
libguile/memoize.c
libguile/memoize.h
libguile/validate.h
module/ice-9/eval.scm