diff options
-rw-r--r-- | NEWS | 6 | ||||
-rw-r--r-- | libguile/ChangeLog | 8 | ||||
-rw-r--r-- | libguile/__scm.h | 5 | ||||
-rw-r--r-- | libguile/eval.c | 21 | ||||
-rw-r--r-- | libguile/eval.h | 4 |
5 files changed, 14 insertions, 30 deletions
@@ -167,6 +167,12 @@ used instead, obtained from scm_current_input_port () etc. If an application needs to retain earlier ports, it should save them in a gc-protected location. +** Removed compile time option MEMOIZE_LOCALS + +Now, caching of local variable positions during memoization is mandatory. +However, the option to disable the caching has most probably not been used +anyway. + ** Removed definitions: scm_lisp_nil, scm_lisp_t, s_nil_ify, scm_m_nil_ify, s_t_ify, scm_m_t_ify, s_0_cond, scm_m_0_cond, s_0_ify, scm_m_0_ify, s_1_ify, scm_m_1_ify, scm_debug_newcell, scm_debug_newcell2, scm_tc16_allocated, diff --git a/libguile/ChangeLog b/libguile/ChangeLog index 4812ef143..dfb6d67df 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,11 @@ +2002-06-28 Dirk Herrmann <D.Herrmann@tu-bs.de> + + * __scm.h, eval.c, eval.h: Removed compile time option + MEMOIZE_LOCALS to clean up the code. Now, caching of local + variable positions during memoization is mandatory. However, the + option to disable the caching has most probably not been used + anyway. + 2002-06-18 Marius Vollmer <mvo@zagadka.ping.de> * print.c (scm_simple_format): Print missing part of format before diff --git a/libguile/__scm.h b/libguile/__scm.h index 986797c57..b437f6d5b 100644 --- a/libguile/__scm.h +++ b/libguile/__scm.h @@ -112,11 +112,6 @@ #undef SCM_RECKLESS #define SCM_CAUTIOUS -/* After looking up a local for the first time, rewrite the - * code graph, caching its position. - */ -#define MEMOIZE_LOCALS - /* All the number support there is. */ #define BIGNUMS diff --git a/libguile/eval.c b/libguile/eval.c index 2eb1367ed..a41a16a21 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -152,8 +152,6 @@ char *alloca (); #define EXTEND_ENV SCM_EXTEND_ENV -#ifdef MEMOIZE_LOCALS - SCM * scm_ilookup (SCM iloc, SCM env) { @@ -168,7 +166,6 @@ scm_ilookup (SCM iloc, SCM env) return SCM_CDRLOC (er); return SCM_CARLOC (SCM_CDR (er)); } -#endif #ifdef USE_THREADS @@ -259,9 +256,7 @@ scm_lookupcar (SCM vloc, SCM genv, int check) { SCM env = genv; register SCM *al, fl, var = SCM_CAR (vloc); -#ifdef MEMOIZE_LOCALS register SCM iloc = SCM_ILOC00; -#endif for (; SCM_NIMP (env); env = SCM_CDR (env)) { if (!SCM_CONSP (SCM_CAR (env))) @@ -273,13 +268,11 @@ scm_lookupcar (SCM vloc, SCM genv, int check) { if (SCM_EQ_P (fl, var)) { -#ifdef MEMOIZE_LOCALS #ifdef USE_THREADS if (! SCM_EQ_P (SCM_CAR (vloc), var)) goto race; #endif SCM_SET_CELL_WORD_0 (vloc, SCM_UNPACK (iloc) + SCM_ICDR); -#endif return SCM_CDRLOC (*al); } else @@ -288,7 +281,6 @@ scm_lookupcar (SCM vloc, SCM genv, int check) al = SCM_CDRLOC (*al); if (SCM_EQ_P (SCM_CAR (fl), var)) { -#ifdef MEMOIZE_LOCALS #ifndef SCM_RECKLESS /* letrec inits to SCM_UNDEFINED */ if (SCM_UNBNDP (SCM_CAR (*al))) { @@ -301,16 +293,11 @@ scm_lookupcar (SCM vloc, SCM genv, int check) goto race; #endif SCM_SETCAR (vloc, iloc); -#endif return SCM_CARLOC (*al); } -#ifdef MEMOIZE_LOCALS iloc = SCM_PACK (SCM_UNPACK (iloc) + SCM_IDINC); -#endif } -#ifdef MEMOIZE_LOCALS iloc = SCM_PACK ((~SCM_IDSTMSK) & (SCM_UNPACK(iloc) + SCM_IFRINC)); -#endif } { SCM top_thunk, real_var; @@ -360,10 +347,8 @@ scm_lookupcar (SCM vloc, SCM genv, int check) var = SCM_CAR (vloc); if (SCM_VARIABLEP (var)) return SCM_VARIABLE_LOC (var); -#ifdef MEMOIZE_LOCALS if (SCM_ITAG7 (var) == SCM_ITAG7 (SCM_ILOC00)) return scm_ilookup (var, genv); -#endif /* We can't cope with anything else than variables and ilocs. When a special form has been memoized (i.e. `let' into `#@let') we return NULL and expect the calling function to do the right @@ -408,7 +393,6 @@ scm_unmemocar (SCM form, SCM env) sym = sym_three_question_marks; SCM_SETCAR (form, sym); } -#ifdef MEMOIZE_LOCALS else if (SCM_ILOCP (c)) { unsigned long int ir; @@ -420,7 +404,6 @@ scm_unmemocar (SCM form, SCM env) env = SCM_CDR (env); SCM_SETCAR (form, SCM_ICDRP (c) ? env : SCM_CAR (env)); } -#endif return form; } } @@ -2313,11 +2296,9 @@ dispatch: { SCM *location; SCM variable = SCM_CAR (x); -#ifdef MEMOIZE_LOCALS if (SCM_ILOCP (variable)) location = scm_ilookup (variable, env); else -#endif if (SCM_VARIABLEP (variable)) location = SCM_VARIABLE_LOC (variable); else /* (SCM_SYMBOLP (variable)) is known to be true */ @@ -2713,7 +2694,6 @@ dispatch: case scm_tc7_variable: RETURN (SCM_VARIABLE_REF(x)); -#ifdef MEMOIZE_LOCALS case SCM_BIT8(SCM_ILOC00): proc = *scm_ilookup (SCM_CAR (x), env); SCM_ASRTGO (SCM_NIMP (proc), badfun); @@ -2723,7 +2703,6 @@ dispatch: #endif #endif break; -#endif /* ifdef MEMOIZE_LOCALS */ case scm_tcs_cons_nimcar: if (SCM_SYMBOLP (SCM_CAR (x))) diff --git a/libguile/eval.h b/libguile/eval.h index 7d76a9098..53e0a8315 100644 --- a/libguile/eval.h +++ b/libguile/eval.h @@ -105,13 +105,9 @@ SCM_API SCM scm_eval_options_interface (SCM setting); ? scm_misc_error (NULL, scm_s_expression, SCM_EOL), 0 \ : 0), \ (x)) -#ifdef MEMOIZE_LOCALS #define SCM_EVALIM(x, env) (SCM_ILOCP (x) \ ? *scm_ilookup ((x), env) \ : SCM_EVALIM2(x)) -#else -#define SCM_EVALIM(x, env) SCM_EVALIM2(x) -#endif #ifdef DEBUG_EXTENSIONS #define SCM_XEVAL(x, env) (SCM_IMP (x) \ ? SCM_EVALIM2(x) \ |