aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDan Nicolaescu2010-07-06 19:49:37 -0700
committerDan Nicolaescu2010-07-06 19:49:37 -0700
commitc0f2f16b6a0801ec30f518db6bcf7f27bb643122 (patch)
treeca7fe1bae3e14ab53a473fb3b6a3ebac321fad20 /src
parent67aecef9f5192d2ab0cee83befc4e2c31fcdf806 (diff)
downloademacs-c0f2f16b6a0801ec30f518db6bcf7f27bb643122.tar.gz
emacs-c0f2f16b6a0801ec30f518db6bcf7f27bb643122.zip
Make the function member of Lisp_Subr use standard C prototypes.
* src/lisp.h (struct Lisp_Subr): Use a union for the function member. (DECL_ALIGN): Add a cast for the function. * src/eval.c (Feval, Ffuncall): Use the proper type for each type function call.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog8
-rw-r--r--src/eval.c82
-rw-r--r--src/lisp.h15
3 files changed, 62 insertions, 43 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 4cc649eccc1..05b231fffa2 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
12010-07-07 Dan Nicolaescu <dann@ics.uci.edu>
2
3 Make the function member of Lisp_Subr use standard C prototypes.
4 * lisp.h (struct Lisp_Subr): Use a union for the function member.
5 (DECL_ALIGN): Add a cast for the function.
6 * eval.c (Feval, Ffuncall): Use the proper type for each type
7 function call.
8
12010-07-06 Chong Yidong <cyd@stupidchicken.com> 92010-07-06 Chong Yidong <cyd@stupidchicken.com>
2 10
3 * fringe.c (draw_fringe_bitmap_1): Use lookup_named_face to get 11 * fringe.c (draw_fringe_bitmap_1): Use lookup_named_face to get
diff --git a/src/eval.c b/src/eval.c
index 84f98c8b22c..d7e19139c6e 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -2330,7 +2330,7 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0,
2330 if (XSUBR (fun)->max_args == UNEVALLED) 2330 if (XSUBR (fun)->max_args == UNEVALLED)
2331 { 2331 {
2332 backtrace.evalargs = 0; 2332 backtrace.evalargs = 0;
2333 val = (*XSUBR (fun)->function) (args_left); 2333 val = (XSUBR (fun)->function.a1) (args_left);
2334 goto done; 2334 goto done;
2335 } 2335 }
2336 2336
@@ -2356,7 +2356,7 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0,
2356 backtrace.args = vals; 2356 backtrace.args = vals;
2357 backtrace.nargs = XINT (numargs); 2357 backtrace.nargs = XINT (numargs);
2358 2358
2359 val = (*XSUBR (fun)->function) (XINT (numargs), vals); 2359 val = (XSUBR (fun)->function.am) (XINT (numargs), vals);
2360 UNGCPRO; 2360 UNGCPRO;
2361 goto done; 2361 goto done;
2362 } 2362 }
@@ -2380,40 +2380,40 @@ DEFUN ("eval", Feval, Seval, 1, 1, 0,
2380 switch (i) 2380 switch (i)
2381 { 2381 {
2382 case 0: 2382 case 0:
2383 val = (*XSUBR (fun)->function) (); 2383 val = (XSUBR (fun)->function.a0) ();
2384 goto done; 2384 goto done;
2385 case 1: 2385 case 1:
2386 val = (*XSUBR (fun)->function) (argvals[0]); 2386 val = (XSUBR (fun)->function.a1) (argvals[0]);
2387 goto done; 2387 goto done;
2388 case 2: 2388 case 2:
2389 val = (*XSUBR (fun)->function) (argvals[0], argvals[1]); 2389 val = (XSUBR (fun)->function.a2) (argvals[0], argvals[1]);
2390 goto done; 2390 goto done;
2391 case 3: 2391 case 3:
2392 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], 2392 val = (XSUBR (fun)->function.a3) (argvals[0], argvals[1],
2393 argvals[2]); 2393 argvals[2]);
2394 goto done; 2394 goto done;
2395 case 4: 2395 case 4:
2396 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], 2396 val = (XSUBR (fun)->function.a4) (argvals[0], argvals[1],
2397 argvals[2], argvals[3]); 2397 argvals[2], argvals[3]);
2398 goto done; 2398 goto done;
2399 case 5: 2399 case 5:
2400 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2400 val = (XSUBR (fun)->function.a5) (argvals[0], argvals[1], argvals[2],
2401 argvals[3], argvals[4]); 2401 argvals[3], argvals[4]);
2402 goto done; 2402 goto done;
2403 case 6: 2403 case 6:
2404 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2404 val = (XSUBR (fun)->function.a6) (argvals[0], argvals[1], argvals[2],
2405 argvals[3], argvals[4], argvals[5]); 2405 argvals[3], argvals[4], argvals[5]);
2406 goto done; 2406 goto done;
2407 case 7: 2407 case 7:
2408 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2408 val = (XSUBR (fun)->function.a7) (argvals[0], argvals[1], argvals[2],
2409 argvals[3], argvals[4], argvals[5], 2409 argvals[3], argvals[4], argvals[5],
2410 argvals[6]); 2410 argvals[6]);
2411 goto done; 2411 goto done;
2412 2412
2413 case 8: 2413 case 8:
2414 val = (*XSUBR (fun)->function) (argvals[0], argvals[1], argvals[2], 2414 val = (XSUBR (fun)->function.a8) (argvals[0], argvals[1], argvals[2],
2415 argvals[3], argvals[4], argvals[5], 2415 argvals[3], argvals[4], argvals[5],
2416 argvals[6], argvals[7]); 2416 argvals[6], argvals[7]);
2417 goto done; 2417 goto done;
2418 2418
2419 default: 2419 default:
@@ -3011,7 +3011,7 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
3011 3011
3012 if (XSUBR (fun)->max_args == MANY) 3012 if (XSUBR (fun)->max_args == MANY)
3013 { 3013 {
3014 val = (*XSUBR (fun)->function) (numargs, args + 1); 3014 val = (XSUBR (fun)->function.am) (numargs, args + 1);
3015 goto done; 3015 goto done;
3016 } 3016 }
3017 3017
@@ -3027,44 +3027,44 @@ usage: (funcall FUNCTION &rest ARGUMENTS) */)
3027 switch (XSUBR (fun)->max_args) 3027 switch (XSUBR (fun)->max_args)
3028 { 3028 {
3029 case 0: 3029 case 0:
3030 val = (*XSUBR (fun)->function) (); 3030 val = (XSUBR (fun)->function.a0) ();
3031 goto done; 3031 goto done;
3032 case 1: 3032 case 1:
3033 val = (*XSUBR (fun)->function) (internal_args[0]); 3033 val = (XSUBR (fun)->function.a1) (internal_args[0]);
3034 goto done; 3034 goto done;
3035 case 2: 3035 case 2:
3036 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1]); 3036 val = (XSUBR (fun)->function.a2) (internal_args[0], internal_args[1]);
3037 goto done; 3037 goto done;
3038 case 3: 3038 case 3:
3039 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 3039 val = (XSUBR (fun)->function.a3) (internal_args[0], internal_args[1],
3040 internal_args[2]); 3040 internal_args[2]);
3041 goto done; 3041 goto done;
3042 case 4: 3042 case 4:
3043 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 3043 val = (XSUBR (fun)->function.a4) (internal_args[0], internal_args[1],
3044 internal_args[2], internal_args[3]); 3044 internal_args[2], internal_args[3]);
3045 goto done; 3045 goto done;
3046 case 5: 3046 case 5:
3047 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 3047 val = (XSUBR (fun)->function.a5) (internal_args[0], internal_args[1],
3048 internal_args[2], internal_args[3], 3048 internal_args[2], internal_args[3],
3049 internal_args[4]); 3049 internal_args[4]);
3050 goto done; 3050 goto done;
3051 case 6: 3051 case 6:
3052 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 3052 val = (XSUBR (fun)->function.a6) (internal_args[0], internal_args[1],
3053 internal_args[2], internal_args[3], 3053 internal_args[2], internal_args[3],
3054 internal_args[4], internal_args[5]); 3054 internal_args[4], internal_args[5]);
3055 goto done; 3055 goto done;
3056 case 7: 3056 case 7:
3057 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 3057 val = (XSUBR (fun)->function.a7) (internal_args[0], internal_args[1],
3058 internal_args[2], internal_args[3], 3058 internal_args[2], internal_args[3],
3059 internal_args[4], internal_args[5], 3059 internal_args[4], internal_args[5],
3060 internal_args[6]); 3060 internal_args[6]);
3061 goto done; 3061 goto done;
3062 3062
3063 case 8: 3063 case 8:
3064 val = (*XSUBR (fun)->function) (internal_args[0], internal_args[1], 3064 val = (XSUBR (fun)->function.a8) (internal_args[0], internal_args[1],
3065 internal_args[2], internal_args[3], 3065 internal_args[2], internal_args[3],
3066 internal_args[4], internal_args[5], 3066 internal_args[4], internal_args[5],
3067 internal_args[6], internal_args[7]); 3067 internal_args[6], internal_args[7]);
3068 goto done; 3068 goto done;
3069 3069
3070 default: 3070 default:
diff --git a/src/lisp.h b/src/lisp.h
index 4874985abf4..3a3cde27897 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -965,7 +965,18 @@ struct Lisp_Bool_Vector
965struct Lisp_Subr 965struct Lisp_Subr
966 { 966 {
967 EMACS_UINT size; 967 EMACS_UINT size;
968 Lisp_Object (*function) (); 968 union {
969 Lisp_Object (*a0) (void);
970 Lisp_Object (*a1) (Lisp_Object);
971 Lisp_Object (*a2) (Lisp_Object, Lisp_Object);
972 Lisp_Object (*a3) (Lisp_Object, Lisp_Object, Lisp_Object);
973 Lisp_Object (*a4) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
974 Lisp_Object (*a5) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
975 Lisp_Object (*a6) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
976 Lisp_Object (*a7) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
977 Lisp_Object (*a8) (Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object, Lisp_Object);
978 Lisp_Object (*am) (int, Lisp_Object *);
979 } function;
969 short min_args, max_args; 980 short min_args, max_args;
970 const char *symbol_name; 981 const char *symbol_name;
971 char *intspec; 982 char *intspec;
@@ -1768,7 +1779,7 @@ typedef struct {
1768 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \ 1779 Lisp_Object fnname DEFUN_ARGS_ ## maxargs ; \
1769 DECL_ALIGN (struct Lisp_Subr, sname) = \ 1780 DECL_ALIGN (struct Lisp_Subr, sname) = \
1770 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \ 1781 { PVEC_SUBR | (sizeof (struct Lisp_Subr) / sizeof (EMACS_INT)), \
1771 fnname, minargs, maxargs, lname, intspec, 0}; \ 1782 (Lisp_Object(*)(void)) fnname, minargs, maxargs, lname, intspec, 0}; \
1772 Lisp_Object fnname 1783 Lisp_Object fnname
1773 1784
1774/* Note that the weird token-substitution semantics of ANSI C makes 1785/* Note that the weird token-substitution semantics of ANSI C makes