summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS6
-rw-r--r--libguile/ChangeLog8
-rw-r--r--libguile/__scm.h5
-rw-r--r--libguile/eval.c21
-rw-r--r--libguile/eval.h4
5 files changed, 14 insertions, 30 deletions
diff --git a/NEWS b/NEWS
index d6463593e..68431fd3e 100644
--- a/NEWS
+++ b/NEWS
@@ -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) \