diff options
| author | Fabián Ezequiel Gallina | 2012-06-14 23:05:43 -0300 |
|---|---|---|
| committer | Fabián Ezequiel Gallina | 2012-06-14 23:05:43 -0300 |
| commit | 315f675857250c2204d024748e9eafa57c68410f (patch) | |
| tree | 101bfee7ff075c2eb02fd4bd80af02ed1da979b5 /src/bytecode.c | |
| parent | c6a506fefd22cb1efde1935154e79b471b943c45 (diff) | |
| parent | 4302f5ba6e853d3f42ca21c536afd5a69b9e1774 (diff) | |
| download | emacs-315f675857250c2204d024748e9eafa57c68410f.tar.gz emacs-315f675857250c2204d024748e9eafa57c68410f.zip | |
Merge from trunk
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 25 |
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 | |||
| 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; |
| @@ -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); |