diff src/eval.c @ 243:f220cc83d72e r20-5b20

Import from CVS: tag r20-5b20
author cvs
date Mon, 13 Aug 2007 10:17:07 +0200
parents f955c73f5258
children 51092a27c943
line wrap: on
line diff
--- a/src/eval.c	Mon Aug 13 10:16:17 2007 +0200
+++ b/src/eval.c	Mon Aug 13 10:17:07 2007 +0200
@@ -654,24 +654,18 @@
        (args))
 {
   /* This function can GC */
-  REGISTER Lisp_Object val;
-  Lisp_Object args_left;
+  Lisp_Object val = Qnil;
   struct gcpro gcpro1;
 
-  if (NILP (args))
-    return Qnil;
-
-  args_left = args;
-  GCPRO1 (args_left);
-
-  do
+  GCPRO1 (args);
+
+  while (!NILP (args))
     {
-      val = Feval (Fcar (args_left));
+      val = Feval (XCAR (args));
       if (!NILP (val))
 	break;
-      args_left = Fcdr (args_left);
+      args = XCDR (args);
     }
-  while (!NILP (args_left));
 
   UNGCPRO;
   return val;
@@ -685,24 +679,18 @@
        (args))
 {
   /* This function can GC */
-  REGISTER Lisp_Object val;
-  Lisp_Object args_left;
+  Lisp_Object val = Qt;
   struct gcpro gcpro1;
 
-  if (NILP (args))
-    return Qt;
-
-  args_left = args;
-  GCPRO1 (args_left);
-
-  do
+  GCPRO1 (args);
+
+  while (!NILP (args))
     {
-      val = Feval (Fcar (args_left));
+      val = Feval (XCAR (args));
       if (NILP (val))
 	break;
-      args_left = Fcdr (args_left);
+      args = XCDR (args);
     }
-  while (!NILP (args_left));
 
   UNGCPRO;
   return val;
@@ -721,12 +709,14 @@
   struct gcpro gcpro1;
 
   GCPRO1 (args);
-  cond = Feval (Fcar (args));
+  cond = Feval (XCAR (args));
   UNGCPRO;
 
+  args = XCDR (args);
+
   if (!NILP (cond))
-    return Feval (Fcar (Fcdr (args)));
-  return Fprogn (Fcdr (Fcdr (args)));
+    return Feval (XCAR (args));
+  return Fprogn (XCDR (args));
 }
 
 DEFUN ("cond", Fcond, 0, UNEVALLED, 0, /*
@@ -742,15 +732,14 @@
        (args))
 {
   /* This function can GC */
-  REGISTER Lisp_Object clause, val;
+  Lisp_Object val = Qnil;
   struct gcpro gcpro1;
 
-  val = Qnil;
   GCPRO1 (args);
   while (!NILP (args))
     {
-      clause = Fcar (args);
-      val = Feval (Fcar (clause));
+      Lisp_Object clause = XCAR (args);
+      val = Feval (XCAR (clause));
       if (!NILP (val))
 	{
 	  if (!EQ (XCDR (clause), Qnil))
@@ -770,22 +759,16 @@
        (args))
 {
   /* This function can GC */
-  REGISTER Lisp_Object val;
-  Lisp_Object args_left;
+  Lisp_Object val = Qnil;
   struct gcpro gcpro1;
 
-  if (! CONSP (args))
-    return Qnil;
-
-  args_left = args;
-  GCPRO1 (args_left);
-
-  do
+  GCPRO1 (args);
+
+  while (!NILP (args))
     {
-      val = Feval (XCAR (args_left));
-      args_left = XCDR (args_left);
+      val = Feval (XCAR (args));
+      args = XCDR (args);
     }
-  while (CONSP (args_left));
 
   UNGCPRO;
   return val;
@@ -800,26 +783,18 @@
 {
   /* This function can GC */
   Lisp_Object val;
-  REGISTER Lisp_Object args_left;
   struct gcpro gcpro1, gcpro2;
-  REGISTER int argnum = 0;
-
-  if (NILP (args))
-    return Qnil;
-
-  args_left = args;
-  val = Qnil;
+
   GCPRO2 (args, val);
 
-  do
+  val = Feval (XCAR (args));
+  args = XCDR (args);
+
+  while (!NILP (args))
     {
-      if (!(argnum++))
-        val = Feval (Fcar (args_left));
-      else
-	Feval (Fcar (args_left));
-      args_left = Fcdr (args_left);
+      Feval (XCAR (args));
+      args = XCDR (args);
     }
-  while (!NILP (args_left));
 
   UNGCPRO;
   return val;
@@ -834,28 +809,20 @@
 {
   /* This function can GC */
   Lisp_Object val;
-  REGISTER Lisp_Object args_left;
   struct gcpro gcpro1, gcpro2;
-  REGISTER int argnum = -1;
-
-  val = Qnil;
-
-  if (NILP (args))
-    return Qnil;
-
-  args_left = args;
-  val = Qnil;
+
   GCPRO2 (args, val);
 
-  do
+  Feval (XCAR (args));
+  args = XCDR (args);
+  val = Feval (XCAR (args));
+  args = XCDR (args);
+
+  while (!NILP (args))
     {
-      if (!(argnum++))
-        val = Feval (Fcar (args_left));
-      else
-	Feval (Fcar (args_left));
-      args_left = Fcdr (args_left);
+      Feval (XCAR (args));
+      args = XCDR (args);
     }
-  while (!NILP (args_left));
 
   UNGCPRO;
   return val;
@@ -961,7 +928,7 @@
 The order of execution is thus TEST, BODY, TEST, BODY and so on
 until TEST returns nil.
 */
-(args))
+       (args))
 {
   /* This function can GC */
   Lisp_Object test, body, tem;
@@ -1008,7 +975,7 @@
 	/*
 	 * uncomment the QUIT if there is some way a circular
 	 * arglist can get in here.  I think Feval or Fapply would
-	 * spin first and the list would never get here. 
+	 * spin first and the list would never get here.
 	 */
 	/* QUIT; */
       }