Mercurial > hg > xemacs-beta
diff src/fns.c @ 195:a2f645c6b9f8 r20-3b24
Import from CVS: tag r20-3b24
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:59:05 +0200 |
parents | b405438285a2 |
children | eb5470882647 |
line wrap: on
line diff
--- a/src/fns.c Mon Aug 13 09:58:32 2007 +0200 +++ b/src/fns.c Mon Aug 13 09:59:05 2007 +0200 @@ -55,6 +55,8 @@ static void print_bit_vector (Lisp_Object, Lisp_Object, int); static int bit_vector_equal (Lisp_Object o1, Lisp_Object o2, int depth); static unsigned long bit_vector_hash (Lisp_Object obj, int depth); +static int internal_old_equal (Lisp_Object o1, Lisp_Object o2, int depth); + DEFINE_BASIC_LRECORD_IMPLEMENTATION ("bit-vector", bit_vector, mark_bit_vector, print_bit_vector, 0, bit_vector_equal, bit_vector_hash, @@ -1064,7 +1066,7 @@ for (tail = list; !NILP (tail); tail = Fcdr (tail)) { tem = Fcar (tail); - if (! NILP (Fequal (elt, tem))) + if (internal_equal (elt, tem, 0)) return tail; QUIT; } @@ -1083,7 +1085,7 @@ for (tail = list; !NILP (tail); tail = Fcdr (tail)) { tem = Fcar (tail); - if (! NILP (Fold_equal (elt, tem))) + if (internal_old_equal (elt, tem, 0)) return tail; QUIT; } @@ -1143,13 +1145,14 @@ (key, list)) { /* This function can GC. */ - REGISTER Lisp_Object tail, elt, tem; + REGISTER Lisp_Object tail, elt; for (tail = list; !NILP (tail); tail = Fcdr (tail)) { elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fequal (Fcar (elt), key); - if (!NILP (tem)) return elt; + if (!CONSP (elt)) + continue; + if (internal_equal (XCAR (elt), key, 0)) + return elt; QUIT; } return Qnil; @@ -1162,13 +1165,14 @@ (key, list)) { /* This function can GC. */ - REGISTER Lisp_Object tail, elt, tem; + REGISTER Lisp_Object tail, elt; for (tail = list; !NILP (tail); tail = Fcdr (tail)) { elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fold_equal (Fcar (elt), key); - if (!NILP (tem)) return elt; + if (!CONSP (elt)) + continue; + if (internal_old_equal (XCAR (elt), key, 0)) + return elt; QUIT; } return Qnil; @@ -1193,9 +1197,13 @@ for (tail = list; !NILP (tail); tail = Fcdr (tail)) { elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fcar (elt); - if (EQ_WITH_EBOLA_NOTICE (key, tem)) return elt; + if (!CONSP (elt)) + continue; + /* Note: we use a temporary variable to avoid multiple + evaluations of XCAR (elt). */ + tem = XCAR (elt); + if (EQ_WITH_EBOLA_NOTICE (key, tem)) + return elt; QUIT; } return Qnil; @@ -1214,9 +1222,11 @@ for (tail = list; !NILP (tail); tail = Fcdr (tail)) { elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fcar (elt); - if (HACKEQ_UNSAFE (key, tem)) return elt; + if (!CONSP (elt)) + continue; + tem = XCAR (elt); + if (HACKEQ_UNSAFE (key, tem)) + return elt; QUIT; } return Qnil; @@ -1249,11 +1259,12 @@ REGISTER Lisp_Object tail; for (tail = list; !NILP (tail); tail = Fcdr (tail)) { - REGISTER Lisp_Object elt, tem; + REGISTER Lisp_Object elt; elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fequal (Fcdr (elt), key); - if (!NILP (tem)) return elt; + if (!CONSP (elt)) + continue; + if (internal_equal (XCDR (elt), key, 0)) + return elt; QUIT; } return Qnil; @@ -1268,11 +1279,12 @@ REGISTER Lisp_Object tail; for (tail = list; !NILP (tail); tail = Fcdr (tail)) { - REGISTER Lisp_Object elt, tem; + REGISTER Lisp_Object elt; elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fold_equal (Fcdr (elt), key); - if (!NILP (tem)) return elt; + if (!CONSP (elt)) + continue; + if (internal_old_equal (XCDR (elt), key, 0)) + return elt; QUIT; } return Qnil; @@ -1288,9 +1300,11 @@ for (tail = list; !NILP (tail); tail = Fcdr (tail)) { elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fcdr (elt); - if (EQ_WITH_EBOLA_NOTICE (key, tem)) return elt; + if (!CONSP (elt)) + continue; + tem = XCDR (elt); + if (EQ_WITH_EBOLA_NOTICE (key, tem)) + return elt; QUIT; } return Qnil; @@ -1306,9 +1320,11 @@ for (tail = list; !NILP (tail); tail = Fcdr (tail)) { elt = Fcar (tail); - if (!CONSP (elt)) continue; - tem = Fcdr (elt); - if (HACKEQ_UNSAFE (key, tem)) return elt; + if (!CONSP (elt)) + continue; + tem = XCDR (elt); + if (HACKEQ_UNSAFE (key, tem)) + return elt; QUIT; } return Qnil; @@ -1344,7 +1360,7 @@ prev = Qnil; while (!NILP (tail)) { - if (!NILP (Fequal (elt, Fcar (tail)))) + if (internal_equal (elt, Fcar (tail), 0)) { if (NILP (prev)) list = Fcdr (tail); @@ -1374,7 +1390,7 @@ prev = Qnil; while (!NILP (tail)) { - if (!NILP (Fold_equal (elt, Fcar (tail)))) + if (internal_old_equal (elt, Fcar (tail), 0)) { if (NILP (prev)) list = Fcdr (tail); @@ -1532,7 +1548,7 @@ while (!NILP (tail)) { Lisp_Object elt = Fcar (tail); - if (CONSP (elt) && ! NILP (Fequal (key, Fcar (elt)))) + if (CONSP (elt) && internal_equal (key, XCAR (elt), 0)) { if (NILP (prev)) list = Fcdr (tail); @@ -1629,7 +1645,7 @@ while (!NILP (tail)) { Lisp_Object elt = Fcar (tail); - if (CONSP (elt) && ! NILP (Fequal (value, Fcdr (elt)))) + if (CONSP (elt) && internal_equal (value, XCDR (elt), 0)) { if (NILP (prev)) list = Fcdr (tail);