aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c22
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
435exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, 435exec_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);