aboutsummaryrefslogtreecommitdiffstats
path: root/src/bytecode.c
diff options
context:
space:
mode:
authorStefan Monnier2011-02-19 00:10:33 -0500
committerStefan Monnier2011-02-19 00:10:33 -0500
commite0f57e65692ed73a86926f737388b60faec92767 (patch)
treecd119f7a6f2a04673f304fbf8cfaf8fc7c0896f2 /src/bytecode.c
parent9a05edc4fcf1eff8966ac327e479bb8f9ca219a9 (diff)
downloademacs-e0f57e65692ed73a86926f737388b60faec92767.tar.gz
emacs-e0f57e65692ed73a86926f737388b60faec92767.zip
* lisp/subr.el (save-window-excursion): New macro, moved from C.
* lisp/emacs-lisp/lisp-mode.el (save-window-excursion): Don't touch. * lisp/emacs-lisp/cconv.el (cconv-closure-convert-rec, cconv-analyse-form): Don't handle save-window-excursion any more. * lisp/emacs-lisp/bytecomp.el (interactive-p, save-window-excursion): Don't use the byte-code any more. (byte-compile-form): Check macro expansion was done. (byte-compile-save-window-excursion): Remove. * lisp/emacs-lisp/byte-opt.el (byte-optimize-form-code-walker): Ignore save-window-excursion. Don't macroepand any more. * src/window.c (Fsave_window_excursion): Remove. Moved to Lisp. (syms_of_window): Don't defsubr it. * src/window.h (Fsave_window_excursion): Don't declare it. * src/bytecode.c (exec_byte_code): Inline Fsave_window_excursion.
Diffstat (limited to 'src/bytecode.c')
-rw-r--r--src/bytecode.c32
1 files changed, 20 insertions, 12 deletions
diff --git a/src/bytecode.c b/src/bytecode.c
index 1ad01aaf8f7..ad2f7d18ade 100644
--- a/src/bytecode.c
+++ b/src/bytecode.c
@@ -138,7 +138,7 @@ extern Lisp_Object Qand_optional, Qand_rest;
138 138
139#define Bpoint 0140 139#define Bpoint 0140
140/* Was Bmark in v17. */ 140/* Was Bmark in v17. */
141#define Bsave_current_buffer 0141 141#define Bsave_current_buffer 0141 /* Obsolete. */
142#define Bgoto_char 0142 142#define Bgoto_char 0142
143#define Binsert 0143 143#define Binsert 0143
144#define Bpoint_max 0144 144#define Bpoint_max 0144
@@ -158,7 +158,7 @@ extern Lisp_Object Qand_optional, Qand_rest;
158#define Bsave_current_buffer_1 0162 /* Replacing Bsave_current_buffer. */ 158#define Bsave_current_buffer_1 0162 /* Replacing Bsave_current_buffer. */
159#define Bread_char 0162 /* No longer generated as of v19 */ 159#define Bread_char 0162 /* No longer generated as of v19 */
160#define Bset_mark 0163 /* this loser is no longer generated as of v18 */ 160#define Bset_mark 0163 /* this loser is no longer generated as of v18 */
161#define Binteractive_p 0164 /* Needed since interactive-p takes unevalled args */ 161#define Binteractive_p 0164 /* Obsolete. */
162 162
163#define Bforward_char 0165 163#define Bforward_char 0165
164#define Bforward_word 0166 164#define Bforward_word 0166
@@ -183,7 +183,7 @@ extern Lisp_Object Qand_optional, Qand_rest;
183#define Bdup 0211 183#define Bdup 0211
184 184
185#define Bsave_excursion 0212 185#define Bsave_excursion 0212
186#define Bsave_window_excursion 0213 186#define Bsave_window_excursion 0213 /* Obsolete. */
187#define Bsave_restriction 0214 187#define Bsave_restriction 0214
188#define Bcatch 0215 188#define Bcatch 0215
189 189
@@ -192,7 +192,7 @@ extern Lisp_Object Qand_optional, Qand_rest;
192#define Btemp_output_buffer_setup 0220 192#define Btemp_output_buffer_setup 0220
193#define Btemp_output_buffer_show 0221 193#define Btemp_output_buffer_show 0221
194 194
195#define Bunbind_all 0222 195#define Bunbind_all 0222 /* Obsolete. */
196 196
197#define Bset_marker 0223 197#define Bset_marker 0223
198#define Bmatch_beginning 0224 198#define Bmatch_beginning 0224
@@ -763,7 +763,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
763 AFTER_POTENTIAL_GC (); 763 AFTER_POTENTIAL_GC ();
764 break; 764 break;
765 765
766 case Bunbind_all: 766 case Bunbind_all: /* Obsolete. */
767 /* To unbind back to the beginning of this frame. Not used yet, 767 /* To unbind back to the beginning of this frame. Not used yet,
768 but will be needed for tail-recursion elimination. */ 768 but will be needed for tail-recursion elimination. */
769 BEFORE_POTENTIAL_GC (); 769 BEFORE_POTENTIAL_GC ();
@@ -891,16 +891,24 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
891 save_excursion_save ()); 891 save_excursion_save ());
892 break; 892 break;
893 893
894 case Bsave_current_buffer: 894 case Bsave_current_buffer: /* Obsolete. */
895 case Bsave_current_buffer_1: 895 case Bsave_current_buffer_1:
896 record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ()); 896 record_unwind_protect (set_buffer_if_live, Fcurrent_buffer ());
897 break; 897 break;
898 898
899 case Bsave_window_excursion: 899 case Bsave_window_excursion: /* Obsolete. */
900 BEFORE_POTENTIAL_GC (); 900 {
901 TOP = Fsave_window_excursion (TOP); /* FIXME: lexbind */ 901 register Lisp_Object val;
902 AFTER_POTENTIAL_GC (); 902 register int count = SPECPDL_INDEX ();
903 break; 903
904 record_unwind_protect (Fset_window_configuration,
905 Fcurrent_window_configuration (Qnil));
906 BEFORE_POTENTIAL_GC ();
907 TOP = Fprogn (TOP);
908 unbind_to (count, TOP);
909 AFTER_POTENTIAL_GC ();
910 break;
911 }
904 912
905 case Bsave_restriction: 913 case Bsave_restriction:
906 record_unwind_protect (save_restriction_restore, 914 record_unwind_protect (save_restriction_restore,
@@ -1412,7 +1420,7 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth,
1412 AFTER_POTENTIAL_GC (); 1420 AFTER_POTENTIAL_GC ();
1413 break; 1421 break;
1414 1422
1415 case Binteractive_p: 1423 case Binteractive_p: /* Obsolete. */
1416 PUSH (Finteractive_p ()); 1424 PUSH (Finteractive_p ());
1417 break; 1425 break;
1418 1426