diff options
| author | Dan Nicolaescu | 2010-07-06 19:49:37 -0700 |
|---|---|---|
| committer | Dan Nicolaescu | 2010-07-06 19:49:37 -0700 |
| commit | c0f2f16b6a0801ec30f518db6bcf7f27bb643122 (patch) | |
| tree | ca7fe1bae3e14ab53a473fb3b6a3ebac321fad20 /src | |
| parent | 67aecef9f5192d2ab0cee83befc4e2c31fcdf806 (diff) | |
| download | emacs-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/ChangeLog | 8 | ||||
| -rw-r--r-- | src/eval.c | 82 | ||||
| -rw-r--r-- | src/lisp.h | 15 |
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 @@ | |||
| 1 | 2010-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 | |||
| 1 | 2010-07-06 Chong Yidong <cyd@stupidchicken.com> | 9 | 2010-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 | |||
| 965 | struct Lisp_Subr | 965 | struct 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 |