summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-04-17 15:05:20 +0000
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>2000-04-17 15:05:20 +0000
commitb0c545678a42b61318a2eefed504c19aee0a7bd9 (patch)
tree4c4a08201a1953ea8e2e0136772bf31231f0272e
parent2891588bee5b48bcc0110f046081967550443ff6 (diff)
downloadguile-b0c545678a42b61318a2eefed504c19aee0a7bd9.tar.gz
* eval.c (scm_unmemocar): Use macros to test for gloc cell.
* eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY): Added missing call to SCM_UNPACK.
-rw-r--r--libguile/ChangeLog8
-rw-r--r--libguile/eval.c7
-rw-r--r--libguile/eval.h7
-rw-r--r--libguile/weaks.h2
4 files changed, 16 insertions, 8 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index 72dfc22d9..b99cd7f1a 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,3 +1,11 @@
+2000-04-17 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
+ * eval.c (scm_unmemocar): Use macros to test for gloc cell.
+ Minimize scope of variable 'ir'.
+
+ * eval.h (SCM_IFRAME, SCM_IDIST), weaks.h (SCM_IS_WHVEC_ANY):
+ Added missing call to SCM_UNPACK.
+
2000-04-17 Mikael Djurfeldt <mdj@thalamus.nada.kth.se>
* validate.h (SCM_VALIDATE_INUM_RANGE_COPY,
diff --git a/libguile/eval.c b/libguile/eval.c
index c17e4787d..81012b347 100644
--- a/libguile/eval.c
+++ b/libguile/eval.c
@@ -405,20 +405,19 @@ scm_lookupcar (SCM vloc, SCM genv, int check)
SCM
scm_unmemocar (SCM form, SCM env)
{
-#ifdef DEBUG_EXTENSIONS
- register int ir;
-#endif
SCM c;
if (SCM_IMP (form))
return form;
c = SCM_CAR (form);
- if (1 == (SCM_UNPACK (c) & 7))
+ if (SCM_ITAG3 (c) == scm_tc3_cons_gloc)
SCM_SETCAR (form, SCM_GLOC_SYM (c));
#ifdef MEMOIZE_LOCALS
#ifdef DEBUG_EXTENSIONS
else if (SCM_ILOCP (c))
{
+ int ir;
+
for (ir = SCM_IFRAME (c); ir != 0; --ir)
env = SCM_CDR (env);
env = SCM_CAR (SCM_CAR (env));
diff --git a/libguile/eval.h b/libguile/eval.h
index 0b163f77f..25e12e36e 100644
--- a/libguile/eval.h
+++ b/libguile/eval.h
@@ -81,9 +81,10 @@ extern SCM scm_eval_options_interface (SCM setting);
#define SCM_ICDR (0x00080000L)
#define SCM_IFRINC (0x00000100L)
#define SCM_IDSTMSK (-SCM_IDINC)
-#define SCM_IFRAME(n) ((int)((SCM_ICDR-SCM_IFRINC)>>8) & ((int)(n)>>8))
-#define SCM_IDIST(n) (((unsigned long)(n))>>20)
-#define SCM_ICDRP(n) (SCM_ICDR & SCM_UNPACK(n))
+#define SCM_IFRAME(n) ((int)((SCM_ICDR-SCM_IFRINC)>>8) \
+ & (SCM_UNPACK (n) >> 8))
+#define SCM_IDIST(n) (SCM_UNPACK (n) >> 20)
+#define SCM_ICDRP(n) (SCM_ICDR & SCM_UNPACK (n))
diff --git a/libguile/weaks.h b/libguile/weaks.h
index e450ab0df..92a17c052 100644
--- a/libguile/weaks.h
+++ b/libguile/weaks.h
@@ -56,7 +56,7 @@
#define SCM_IS_WHVEC(X) (SCM_UNPACK (SCM_VELTS(X)[-1]) == 1)
#define SCM_IS_WHVEC_V(X) (SCM_UNPACK (SCM_VELTS(X)[-1]) == 2)
#define SCM_IS_WHVEC_B(X) (SCM_UNPACK (SCM_VELTS(X)[-1]) == 3)
-#define SCM_IS_WHVEC_ANY(X) (SCM_VELTS(X)[-1])
+#define SCM_IS_WHVEC_ANY(X) (SCM_UNPACK (SCM_VELTS(X)[-1]) != 0)
#define SCM_WVECT_GC_CHAIN(X) (SCM_VELTS(X)[-2])