summaryrefslogtreecommitdiff
path: root/libguile/goops.h
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2009-10-31 12:04:53 +0100
committerAndy Wingo <wingo@pobox.com>2009-11-15 20:28:11 +0100
commit521ac49bdea053227c973a92e37fcc0879fa20d0 (patch)
treeb29383cc2291ed2a2d485a2644d96e3f73164d98 /libguile/goops.h
parent48c7c44e70e6ba80fe16bfb179320cffb6a03996 (diff)
downloadguile-521ac49bdea053227c973a92e37fcc0879fa20d0.tar.gz
SCM_GENERIC_METHOD_CACHE macro splits from SCM_ENTITY_PROCEDURE
* libguile/goops.h (SCM_GENERIC_METHOD_CACHE) (SCM_SET_GENERIC_METHOD_CACHE): Two new macros; the same as SCM_[SET_]ENTITY_PROCEDURE, but more reflecting the reality of the generic hack. * libguile/eval.i.c: * libguile/goops.c: * libguile/objects.c: * libguile/vm-i-system.c: Use the new macros when it is appropriate to do so.
Diffstat (limited to 'libguile/goops.h')
-rw-r--r--libguile/goops.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/libguile/goops.h b/libguile/goops.h
index 1e3ed535f..5d626c413 100644
--- a/libguile/goops.h
+++ b/libguile/goops.h
@@ -133,6 +133,8 @@ typedef struct scm_t_method {
(SCM_INSTANCEP (x) && SCM_SUBCLASSP (SCM_CLASS_OF (x), scm_class_method))
#define SCM_VALIDATE_METHOD(pos, x) SCM_MAKE_VALIDATE_MSG (pos, x, METHODP, "method")
+#define SCM_GENERIC_METHOD_CACHE(G) (SCM_PACK (SCM_STRUCT_DATA (G) [scm_struct_i_procedure]))
+#define SCM_SET_GENERIC_METHOD_CACHE(G,C) (SCM_STRUCT_DATA (G) [scm_struct_i_procedure] = SCM_UNPACK (C))
#define SCM_MCACHE_N_SPECIALIZED(C) SCM_CADDR (C)
#define SCM_SET_MCACHE_N_SPECIALIZED(C, X) SCM_SETCAR (SCM_CDDR (C), X)