diff src/eval.c @ 111997:a5a188ddc758

Minor clean up to silence some gcc warnings. * src/window.c (Fset_window_buffer): * src/xterm.c (x_set_frame_alpha): Restructure code to silence compiler warning. (handle_one_xevent): Remove unused var `p'. (do_ewmh_fullscreen): Remove unused var `lval'. (xembed_set_info): Remove unused var `atom'. * src/textprop.c (Fremove_list_of_text_properties): Add braces to silence compiler warning. * src/fontset.c (fontset_id_valid_p, dump_fontset): * src/ftfont.c (ftfont_drive_otf): Modernize k&r declaration. * src/eval.c (Feval, Ffuncall): Avoid unneeded gotos. * src/dispnew.c (update_frame, update_frame_1): Compile the `do_pause' label only when it's used. * src/image.c (x_create_bitmap_from_xpm_data): * src/dispextern.h (x_create_bitmap_from_xpm_data): Use const char** like its callers. * src/coding.c (detect_coding_utf_16): Remove unused vars `src_base' and `consumed_chars'. (DECODE_EMACS_MULE_21_COMPOSITION): Remove unused var `charbuf_base'. (decode_coding_emacs_mule): Remove unused label `retry'. (detect_eol): Add parens to silence compiler warning. * src/alloc.c (bytes_used_when_reconsidered): Move to the #ifdef where it's used to silence the compiler. (make_number): Modernize k&r declaration. (mark_char_table): Add parens to silence compiler warning.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 19 Dec 2010 00:43:42 -0500
parents 0bb15e5b9690
children ac49e05bfcf2
line wrap: on
line diff
--- a/src/eval.c	Sat Dec 18 12:39:05 2010 -0800
+++ b/src/eval.c	Sun Dec 19 00:43:42 2010 -0500
@@ -2291,14 +2291,12 @@
 	  (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < XINT (numargs)))
 	xsignal2 (Qwrong_number_of_arguments, original_fun, numargs);
 
-      if (XSUBR (fun)->max_args == UNEVALLED)
+      else if (XSUBR (fun)->max_args == UNEVALLED)
 	{
 	  backtrace.evalargs = 0;
 	  val = (XSUBR (fun)->function.aUNEVALLED) (args_left);
-	  goto done;
 	}
-
-      if (XSUBR (fun)->max_args == MANY)
+      else if (XSUBR (fun)->max_args == MANY)
 	{
 	  /* Pass a vector of evaluated arguments */
 	  Lisp_Object *vals;
@@ -2324,73 +2322,76 @@
 	  val = (XSUBR (fun)->function.aMANY) (XINT (numargs), vals);
 	  UNGCPRO;
 	  SAFE_FREE ();
-	  goto done;
 	}
-
-      GCPRO3 (args_left, fun, fun);
-      gcpro3.var = argvals;
-      gcpro3.nvars = 0;
-
-      maxargs = XSUBR (fun)->max_args;
-      for (i = 0; i < maxargs; args_left = Fcdr (args_left))
-	{
-	  argvals[i] = Feval (Fcar (args_left));
-	  gcpro3.nvars = ++i;
-	}
-
-      UNGCPRO;
-
-      backtrace.args = argvals;
-      backtrace.nargs = XINT (numargs);
-
-      switch (i)
+      else
 	{
-	case 0:
-	  val = (XSUBR (fun)->function.a0) ();
-	  goto done;
-	case 1:
-	  val = (XSUBR (fun)->function.a1) (argvals[0]);
-	  goto done;
-	case 2:
-	  val = (XSUBR (fun)->function.a2) (argvals[0], argvals[1]);
-	  goto done;
-	case 3:
-	  val = (XSUBR (fun)->function.a3) (argvals[0], argvals[1],
-					    argvals[2]);
-	  goto done;
-	case 4:
-	  val = (XSUBR (fun)->function.a4) (argvals[0], argvals[1],
-					    argvals[2], argvals[3]);
-	  goto done;
-	case 5:
-	  val = (XSUBR (fun)->function.a5) (argvals[0], argvals[1], argvals[2],
-					    argvals[3], argvals[4]);
-	  goto done;
-	case 6:
-	  val = (XSUBR (fun)->function.a6) (argvals[0], argvals[1], argvals[2],
-					    argvals[3], argvals[4], argvals[5]);
-	  goto done;
-	case 7:
-	  val = (XSUBR (fun)->function.a7) (argvals[0], argvals[1], argvals[2],
-					    argvals[3], argvals[4], argvals[5],
-					    argvals[6]);
-	  goto done;
-
-	case 8:
-	  val = (XSUBR (fun)->function.a8) (argvals[0], argvals[1], argvals[2],
-					    argvals[3], argvals[4], argvals[5],
-					    argvals[6], argvals[7]);
-	  goto done;
-
-	default:
-	  /* Someone has created a subr that takes more arguments than
-	     is supported by this code.  We need to either rewrite the
-	     subr to use a different argument protocol, or add more
-	     cases to this switch.  */
-	  abort ();
+	  GCPRO3 (args_left, fun, fun);
+	  gcpro3.var = argvals;
+	  gcpro3.nvars = 0;
+
+	  maxargs = XSUBR (fun)->max_args;
+	  for (i = 0; i < maxargs; args_left = Fcdr (args_left))
+	    {
+	      argvals[i] = Feval (Fcar (args_left));
+	      gcpro3.nvars = ++i;
+	    }
+
+	  UNGCPRO;
+
+	  backtrace.args = argvals;
+	  backtrace.nargs = XINT (numargs);
+
+	  switch (i)
+	    {
+	    case 0:
+	      val = (XSUBR (fun)->function.a0 ());
+	      break;
+	    case 1:
+	      val = (XSUBR (fun)->function.a1 (argvals[0]));
+	      break;
+	    case 2:
+	      val = (XSUBR (fun)->function.a2 (argvals[0], argvals[1]));
+	      break;
+	    case 3:
+	      val = (XSUBR (fun)->function.a3
+		     (argvals[0], argvals[1], argvals[2]));
+	      break;
+	    case 4:
+	      val = (XSUBR (fun)->function.a4
+		     (argvals[0], argvals[1], argvals[2], argvals[3]));
+	      break;
+	    case 5:
+	      val = (XSUBR (fun)->function.a5
+		     (argvals[0], argvals[1], argvals[2], argvals[3],
+		      argvals[4]));
+	      break;
+	    case 6:
+	      val = (XSUBR (fun)->function.a6
+		     (argvals[0], argvals[1], argvals[2], argvals[3],
+		      argvals[4], argvals[5]));
+	      break;
+	    case 7:
+	      val = (XSUBR (fun)->function.a7
+		     (argvals[0], argvals[1], argvals[2], argvals[3],
+		      argvals[4], argvals[5], argvals[6]));
+	      break;
+
+	    case 8:
+	      val = (XSUBR (fun)->function.a8
+		     (argvals[0], argvals[1], argvals[2], argvals[3],
+		      argvals[4], argvals[5], argvals[6], argvals[7]));
+	      break;
+
+	    default:
+	      /* Someone has created a subr that takes more arguments than
+		 is supported by this code.  We need to either rewrite the
+		 subr to use a different argument protocol, or add more
+		 cases to this switch.  */
+	      abort ();
+	    }
 	}
     }
-  if (COMPILEDP (fun))
+  else if (COMPILEDP (fun))
     val = apply_lambda (fun, original_args, 1);
   else
     {
@@ -2413,7 +2414,6 @@
       else
 	xsignal1 (Qinvalid_function, original_fun);
     }
- done:
   CHECK_CONS_LIST ();
 
   lisp_eval_depth--;
@@ -2956,83 +2956,84 @@
 
   if (SUBRP (fun))
     {
-       if (numargs < XSUBR (fun)->min_args
+      if (numargs < XSUBR (fun)->min_args
 	  || (XSUBR (fun)->max_args >= 0 && XSUBR (fun)->max_args < numargs))
 	{
 	  XSETFASTINT (lisp_numargs, numargs);
 	  xsignal2 (Qwrong_number_of_arguments, original_fun, lisp_numargs);
 	}
 
-      if (XSUBR (fun)->max_args == UNEVALLED)
+      else if (XSUBR (fun)->max_args == UNEVALLED)
 	xsignal1 (Qinvalid_function, original_fun);
 
-      if (XSUBR (fun)->max_args == MANY)
-	{
-	  val = (XSUBR (fun)->function.aMANY) (numargs, args + 1);
-	  goto done;
-	}
-
-      if (XSUBR (fun)->max_args > numargs)
-	{
-	  internal_args = (Lisp_Object *) alloca (XSUBR (fun)->max_args * sizeof (Lisp_Object));
-	  memcpy (internal_args, args + 1, numargs * sizeof (Lisp_Object));
-	  for (i = numargs; i < XSUBR (fun)->max_args; i++)
-	    internal_args[i] = Qnil;
-	}
+      else if (XSUBR (fun)->max_args == MANY)
+	val = (XSUBR (fun)->function.aMANY) (numargs, args + 1);
       else
-	internal_args = args + 1;
-      switch (XSUBR (fun)->max_args)
 	{
-	case 0:
-	  val = (XSUBR (fun)->function.a0) ();
-	  goto done;
-	case 1:
-	  val = (XSUBR (fun)->function.a1) (internal_args[0]);
-	  goto done;
-	case 2:
-	  val = (XSUBR (fun)->function.a2) (internal_args[0], internal_args[1]);
-	  goto done;
-	case 3:
-	  val = (XSUBR (fun)->function.a3) (internal_args[0], internal_args[1],
-					    internal_args[2]);
-	  goto done;
-	case 4:
-	  val = (XSUBR (fun)->function.a4) (internal_args[0], internal_args[1],
-					    internal_args[2], internal_args[3]);
-	  goto done;
-	case 5:
-	  val = (XSUBR (fun)->function.a5) (internal_args[0], internal_args[1],
-					    internal_args[2], internal_args[3],
-					    internal_args[4]);
-	  goto done;
-	case 6:
-	  val = (XSUBR (fun)->function.a6) (internal_args[0], internal_args[1],
-					    internal_args[2], internal_args[3],
-					    internal_args[4], internal_args[5]);
-	  goto done;
-	case 7:
-	  val = (XSUBR (fun)->function.a7) (internal_args[0], internal_args[1],
-					    internal_args[2], internal_args[3],
-					    internal_args[4], internal_args[5],
-					    internal_args[6]);
-	  goto done;
-
-	case 8:
-	  val = (XSUBR (fun)->function.a8) (internal_args[0], internal_args[1],
-					    internal_args[2], internal_args[3],
-					    internal_args[4], internal_args[5],
-					    internal_args[6], internal_args[7]);
-	  goto done;
-
-	default:
-
-	  /* If a subr takes more than 8 arguments without using MANY
-	     or UNEVALLED, we need to extend this function to support it.
-	     Until this is done, there is no way to call the function.  */
-	  abort ();
+	  if (XSUBR (fun)->max_args > numargs)
+	    {
+	      internal_args = (Lisp_Object *) alloca (XSUBR (fun)->max_args * sizeof (Lisp_Object));
+	      memcpy (internal_args, args + 1, numargs * sizeof (Lisp_Object));
+	      for (i = numargs; i < XSUBR (fun)->max_args; i++)
+		internal_args[i] = Qnil;
+	    }
+	  else
+	    internal_args = args + 1;
+	  switch (XSUBR (fun)->max_args)
+	    {
+	    case 0:
+	      val = (XSUBR (fun)->function.a0 ());
+	      break;
+	    case 1:
+	      val = (XSUBR (fun)->function.a1 (internal_args[0]));
+	      break;
+	    case 2:
+	      val = (XSUBR (fun)->function.a2
+		     (internal_args[0], internal_args[1]));
+	      break;
+	    case 3:
+	      val = (XSUBR (fun)->function.a3
+		     (internal_args[0], internal_args[1], internal_args[2]));
+	      break;
+	    case 4:
+	      val = (XSUBR (fun)->function.a4
+		     (internal_args[0], internal_args[1], internal_args[2],
+		     internal_args[3]));
+	      break;
+	    case 5:
+	      val = (XSUBR (fun)->function.a5
+		     (internal_args[0], internal_args[1], internal_args[2],
+		      internal_args[3], internal_args[4]));
+	      break;
+	    case 6:
+	      val = (XSUBR (fun)->function.a6
+		     (internal_args[0], internal_args[1], internal_args[2],
+		      internal_args[3], internal_args[4], internal_args[5]));
+	      break;
+	    case 7:
+	      val = (XSUBR (fun)->function.a7
+		     (internal_args[0], internal_args[1], internal_args[2],
+		      internal_args[3], internal_args[4], internal_args[5],
+		      internal_args[6]));
+	      break;
+
+	    case 8:
+	      val = (XSUBR (fun)->function.a8
+		     (internal_args[0], internal_args[1], internal_args[2],
+		      internal_args[3], internal_args[4], internal_args[5],
+		      internal_args[6], internal_args[7]));
+	      break;
+
+	    default:
+
+	      /* If a subr takes more than 8 arguments without using MANY
+		 or UNEVALLED, we need to extend this function to support it.
+		 Until this is done, there is no way to call the function.  */
+	      abort ();
+	    }
 	}
     }
-  if (COMPILEDP (fun))
+  else if (COMPILEDP (fun))
     val = funcall_lambda (fun, numargs, args + 1);
   else
     {
@@ -3054,7 +3055,6 @@
       else
 	xsignal1 (Qinvalid_function, original_fun);
     }
- done:
   CHECK_CONS_LIST ();
   lisp_eval_depth--;
   if (backtrace.debug_on_exit)