aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorFabián Ezequiel Gallina2012-06-14 23:05:43 -0300
committerFabián Ezequiel Gallina2012-06-14 23:05:43 -0300
commit315f675857250c2204d024748e9eafa57c68410f (patch)
tree101bfee7ff075c2eb02fd4bd80af02ed1da979b5 /src/bytecode.c
parentc6a506fefd22cb1efde1935154e79b471b943c45 (diff)
parent4302f5ba6e853d3f42ca21c536afd5a69b9e1774 (diff)
downloademacs-315f675857250c2204d024748e9eafa57c68410f.tar.gz
emacs-315f675857250c2204d024748e9eafa57c68410f.zip
Merge from trunk
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c25
1 files changed, 13 insertions, 12 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 6f945723d38..e2370254f36 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -318,7 +318,7 @@ unmark_byte_stack (void)
318 { 318 {
319 if (stack->byte_string_start != SDATA (stack->byte_string)) 319 if (stack->byte_string_start != SDATA (stack->byte_string))
320 { 320 {
321 int offset = stack->pc - stack->byte_string_start; 321 ptrdiff_t offset = stack->pc - stack->byte_string_start;
322 stack->byte_string_start = SDATA (stack->byte_string); 322 stack->byte_string_start = SDATA (stack->byte_string);
323 stack->pc = stack->byte_string_start + offset; 323 stack->pc = stack->byte_string_start + offset;
324 } 324 }
@@ -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;
@@ -446,7 +446,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
446#ifdef BYTE_CODE_SAFE 446#ifdef BYTE_CODE_SAFE
447 ptrdiff_t const_length; 447 ptrdiff_t const_length;
448 Lisp_Object *stacke; 448 Lisp_Object *stacke;
449 int bytestr_length; 449 ptrdiff_t bytestr_length;
450#endif 450#endif
451 struct byte_stack stack; 451 struct byte_stack stack;
452 Lisp_Object *top; 452 Lisp_Object *top;
@@ -486,15 +486,14 @@ 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)) 489 if (MAX_ALLOCA / sizeof (Lisp_Object) <= XFASTINT (maxdepth))
490 memory_full (SIZE_MAX); 490 memory_full (SIZE_MAX);
491 top = (Lisp_Object *) alloca (XFASTINT (maxdepth) 491 top = (Lisp_Object *) alloca ((XFASTINT (maxdepth) + 1)
492 * sizeof (Lisp_Object)); 492 * sizeof (Lisp_Object));
493#if BYTE_MAINTAIN_TOP 493#if BYTE_MAINTAIN_TOP
494 stack.bottom = top; 494 stack.bottom = top + 1;
495 stack.top = NULL; 495 stack.top = NULL;
496#endif 496#endif
497 top -= 1;
498 stack.next = byte_stack_list; 497 stack.next = byte_stack_list;
499 byte_stack_list = &stack; 498 byte_stack_list = &stack;
500 499
@@ -943,7 +942,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
943 942
944 case Bsave_window_excursion: /* Obsolete since 24.1. */ 943 case Bsave_window_excursion: /* Obsolete since 24.1. */
945 { 944 {
946 register int count1 = SPECPDL_INDEX (); 945 register ptrdiff_t count1 = SPECPDL_INDEX ();
947 record_unwind_protect (Fset_window_configuration, 946 record_unwind_protect (Fset_window_configuration,
948 Fcurrent_window_configuration (Qnil)); 947 Fcurrent_window_configuration (Qnil));
949 BEFORE_POTENTIAL_GC (); 948 BEFORE_POTENTIAL_GC ();
@@ -1007,13 +1006,14 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1007 case Bnth: 1006 case Bnth:
1008 { 1007 {
1009 Lisp_Object v1, v2; 1008 Lisp_Object v1, v2;
1009 EMACS_INT n;
1010 BEFORE_POTENTIAL_GC (); 1010 BEFORE_POTENTIAL_GC ();
1011 v1 = POP; 1011 v1 = POP;
1012 v2 = TOP; 1012 v2 = TOP;
1013 CHECK_NUMBER (v2); 1013 CHECK_NUMBER (v2);
1014 op = XINT (v2); 1014 n = XINT (v2);
1015 immediate_quit = 1; 1015 immediate_quit = 1;
1016 while (--op >= 0 && CONSP (v1)) 1016 while (--n >= 0 && CONSP (v1))
1017 v1 = XCDR (v1); 1017 v1 = XCDR (v1);
1018 immediate_quit = 0; 1018 immediate_quit = 0;
1019 TOP = CAR (v1); 1019 TOP = CAR (v1);
@@ -1640,14 +1640,15 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1640 if (CONSP (TOP)) 1640 if (CONSP (TOP))
1641 { 1641 {
1642 /* Exchange args and then do nth. */ 1642 /* Exchange args and then do nth. */
1643 EMACS_INT n;
1643 BEFORE_POTENTIAL_GC (); 1644 BEFORE_POTENTIAL_GC ();
1644 v2 = POP; 1645 v2 = POP;
1645 v1 = TOP; 1646 v1 = TOP;
1646 CHECK_NUMBER (v2); 1647 CHECK_NUMBER (v2);
1647 AFTER_POTENTIAL_GC (); 1648 AFTER_POTENTIAL_GC ();
1648 op = XINT (v2); 1649 n = XINT (v2);
1649 immediate_quit = 1; 1650 immediate_quit = 1;
1650 while (--op >= 0 && CONSP (v1)) 1651 while (--n >= 0 && CONSP (v1))
1651 v1 = XCDR (v1); 1652 v1 = XCDR (v1);
1652 immediate_quit = 0; 1653 immediate_quit = 0;
1653 TOP = CAR (v1); 1654 TOP = CAR (v1);