diff options
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 9ed29e94b54..b6ac6c51bed 100644 --- a/src/bytecode.c +++ b/src/bytecode.c | |||
| @@ -435,7 +435,7 @@ Lisp_Object | |||
| 435 | exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | 435 | exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, |
| 436 | Lisp_Object args_template, ptrdiff_t nargs, Lisp_Object *args) | 436 | Lisp_Object args_template, ptrdiff_t nargs, Lisp_Object *args) |
| 437 | { | 437 | { |
| 438 | int count = SPECPDL_INDEX (); | 438 | ptrdiff_t count = SPECPDL_INDEX (); |
| 439 | #ifdef BYTE_CODE_METER | 439 | #ifdef BYTE_CODE_METER |
| 440 | int this_op = 0; | 440 | int this_op = 0; |
| 441 | int prev_op; | 441 | int prev_op; |
| @@ -486,8 +486,6 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 486 | stack.byte_string = bytestr; | 486 | stack.byte_string = bytestr; |
| 487 | stack.pc = stack.byte_string_start = SDATA (bytestr); | 487 | stack.pc = stack.byte_string_start = SDATA (bytestr); |
| 488 | stack.constants = vector; | 488 | stack.constants = vector; |
| 489 | if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof (Lisp_Object) < XFASTINT (maxdepth)) | ||
| 490 | memory_full (SIZE_MAX); | ||
| 491 | top = (Lisp_Object *) alloca (XFASTINT (maxdepth) | 489 | top = (Lisp_Object *) alloca (XFASTINT (maxdepth) |
| 492 | * sizeof (Lisp_Object)); | 490 | * sizeof (Lisp_Object)); |
| 493 | #if BYTE_MAINTAIN_TOP | 491 | #if BYTE_MAINTAIN_TOP |
| @@ -504,14 +502,14 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 504 | 502 | ||
| 505 | if (INTEGERP (args_template)) | 503 | if (INTEGERP (args_template)) |
| 506 | { | 504 | { |
| 507 | ptrdiff_t at = XINT (args_template); | 505 | EMACS_INT at = XINT (args_template); |
| 508 | int rest = at & 128; | 506 | int rest = at & 128; |
| 509 | int mandatory = at & 127; | 507 | int mandatory = at & 127; |
| 510 | ptrdiff_t nonrest = at >> 8; | 508 | EMACS_INT nonrest = at >> 8; |
| 511 | eassert (mandatory <= nonrest); | 509 | eassert (mandatory <= nonrest); |
| 512 | if (nargs <= nonrest) | 510 | if (nargs <= nonrest) |
| 513 | { | 511 | { |
| 514 | ptrdiff_t i; | 512 | EMACS_INT i; |
| 515 | for (i = 0 ; i < nargs; i++, args++) | 513 | for (i = 0 ; i < nargs; i++, args++) |
| 516 | PUSH (*args); | 514 | PUSH (*args); |
| 517 | if (nargs < mandatory) | 515 | if (nargs < mandatory) |
| @@ -943,7 +941,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 943 | 941 | ||
| 944 | case Bsave_window_excursion: /* Obsolete since 24.1. */ | 942 | case Bsave_window_excursion: /* Obsolete since 24.1. */ |
| 945 | { | 943 | { |
| 946 | register int count1 = SPECPDL_INDEX (); | 944 | register ptrdiff_t count1 = SPECPDL_INDEX (); |
| 947 | record_unwind_protect (Fset_window_configuration, | 945 | record_unwind_protect (Fset_window_configuration, |
| 948 | Fcurrent_window_configuration (Qnil)); | 946 | Fcurrent_window_configuration (Qnil)); |
| 949 | BEFORE_POTENTIAL_GC (); | 947 | BEFORE_POTENTIAL_GC (); |
| @@ -1007,13 +1005,14 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 1007 | case Bnth: | 1005 | case Bnth: |
| 1008 | { | 1006 | { |
| 1009 | Lisp_Object v1, v2; | 1007 | Lisp_Object v1, v2; |
| 1008 | EMACS_INT n; | ||
| 1010 | BEFORE_POTENTIAL_GC (); | 1009 | BEFORE_POTENTIAL_GC (); |
| 1011 | v1 = POP; | 1010 | v1 = POP; |
| 1012 | v2 = TOP; | 1011 | v2 = TOP; |
| 1013 | CHECK_NUMBER (v2); | 1012 | CHECK_NUMBER (v2); |
| 1014 | op = XINT (v2); | 1013 | n = XINT (v2); |
| 1015 | immediate_quit = 1; | 1014 | immediate_quit = 1; |
| 1016 | while (--op >= 0 && CONSP (v1)) | 1015 | while (--n >= 0 && CONSP (v1)) |
| 1017 | v1 = XCDR (v1); | 1016 | v1 = XCDR (v1); |
| 1018 | immediate_quit = 0; | 1017 | immediate_quit = 0; |
| 1019 | TOP = CAR (v1); | 1018 | TOP = CAR (v1); |
| @@ -1640,14 +1639,15 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, | |||
| 1640 | if (CONSP (TOP)) | 1639 | if (CONSP (TOP)) |
| 1641 | { | 1640 | { |
| 1642 | /* Exchange args and then do nth. */ | 1641 | /* Exchange args and then do nth. */ |
| 1642 | EMACS_INT n; | ||
| 1643 | BEFORE_POTENTIAL_GC (); | 1643 | BEFORE_POTENTIAL_GC (); |
| 1644 | v2 = POP; | 1644 | v2 = POP; |
| 1645 | v1 = TOP; | 1645 | v1 = TOP; |
| 1646 | CHECK_NUMBER (v2); | 1646 | CHECK_NUMBER (v2); |
| 1647 | AFTER_POTENTIAL_GC (); | 1647 | AFTER_POTENTIAL_GC (); |
| 1648 | op = XINT (v2); | 1648 | n = XINT (v2); |
| 1649 | immediate_quit = 1; | 1649 | immediate_quit = 1; |
| 1650 | while (--op >= 0 && CONSP (v1)) | 1650 | while (--n >= 0 && CONSP (v1)) |
| 1651 | v1 = XCDR (v1); | 1651 | v1 = XCDR (v1); |
| 1652 | immediate_quit = 0; | 1652 | immediate_quit = 0; |
| 1653 | TOP = CAR (v1); | 1653 | TOP = CAR (v1); |