aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog9
-rw-r--r--lisp/Makefile.in6
-rw-r--r--lisp/cedet/semantic/wisent/comp.el3
-rw-r--r--lisp/emacs-lisp/byte-opt.el16
-rw-r--r--lisp/emacs-lisp/bytecomp.el162
-rw-r--r--lisp/emacs-lisp/cconv.el8
-rw-r--r--lisp/emacs-lisp/cl-loaddefs.el2
-rw-r--r--lisp/emacs-lisp/cl-macs.el2
-rw-r--r--lisp/emacs-lisp/cl.el6
-rw-r--r--lisp/emacs-lisp/disass.el1
-rw-r--r--lisp/emacs-lisp/edebug.el2
-rw-r--r--lisp/emacs-lisp/eieio.el3
-rw-r--r--lisp/emacs-lisp/lisp-mode.el2
13 files changed, 90 insertions, 132 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index b517c48738f..f977b976c4b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,12 @@
12011-04-01 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/bytecomp.el (byte-compile-single-version)
4 (byte-compile-version-cond, byte-compile-delay-out)
5 (byte-compile-delayed-out): Remove, unused.
6
7 * emacs-lisp/byte-opt.el (byte-optimize-form-code-walker):
8 Remove debug statement.
9
12011-03-30 Stefan Monnier <monnier@iro.umontreal.ca> 102011-03-30 Stefan Monnier <monnier@iro.umontreal.ca>
2 11
3 * subr.el (apply-partially): Use a non-nil static environment. 12 * subr.el (apply-partially): Use a non-nil static environment.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index ab82c99ac33..083f312d613 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -206,8 +206,8 @@ compile-onefile:
206 @echo Compiling $(THEFILE) 206 @echo Compiling $(THEFILE)
207 @# Use byte-compile-refresh-preloaded to try and work around some of 207 @# Use byte-compile-refresh-preloaded to try and work around some of
208 @# the most common bootstrapping problems. 208 @# the most common bootstrapping problems.
209 @$(emacs) $(BYTE_COMPILE_FLAGS) -l bytecomp \ 209 @$(emacs) $(BYTE_COMPILE_FLAGS) \
210 -f byte-compile-refresh-preloaded \ 210 -l bytecomp -f byte-compile-refresh-preloaded \
211 -f batch-byte-compile $(THEFILE) 211 -f batch-byte-compile $(THEFILE)
212 212
213# Files MUST be compiled one by one. If we compile several files in a 213# Files MUST be compiled one by one. If we compile several files in a
@@ -292,7 +292,7 @@ compile-always: doit
292compile-calc: 292compile-calc:
293 for el in $(lisp)/calc/*.el; do \ 293 for el in $(lisp)/calc/*.el; do \
294 echo Compiling $$el; \ 294 echo Compiling $$el; \
295 $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile $$el || exit 1; \ 295 $(emacs) $(BYTE_COMPILE_FLAGS) -f batch-byte-compile $$el || exit 1;\
296 done 296 done
297 297
298# Backup compiled Lisp files in elc.tar.gz. If that file already 298# Backup compiled Lisp files in elc.tar.gz. If that file already
diff --git a/lisp/cedet/semantic/wisent/comp.el b/lisp/cedet/semantic/wisent/comp.el
index 6b473f9ad81..f92ae88c14e 100644
--- a/lisp/cedet/semantic/wisent/comp.el
+++ b/lisp/cedet/semantic/wisent/comp.el
@@ -3484,6 +3484,9 @@ Automatically called by the Emacs Lisp byte compiler as a
3484 (macroexpand-all 3484 (macroexpand-all
3485 (wisent-automaton-lisp-form (eval form))))) 3485 (wisent-automaton-lisp-form (eval form)))))
3486 3486
3487;; FIXME: We shouldn't use a `byte-compile' handler. Maybe using a hash-table
3488;; instead of an obarray would work around the problem that obarrays
3489;; aren't printable. Then (put 'wisent-compile-grammar 'side-effect-free t).
3487(put 'wisent-compile-grammar 'byte-compile 'wisent-byte-compile-grammar) 3490(put 'wisent-compile-grammar 'byte-compile 'wisent-byte-compile-grammar)
3488 3491
3489(defun wisent-automaton-lisp-form (automaton) 3492(defun wisent-automaton-lisp-form (automaton)
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 35c9a5ddf45..548fcd133df 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -534,7 +534,6 @@
534 (cons fn (mapcar #'byte-optimize-form (cdr form)))) 534 (cons fn (mapcar #'byte-optimize-form (cdr form))))
535 535
536 ((not (symbolp fn)) 536 ((not (symbolp fn))
537 (debug)
538 (byte-compile-warn "`%s' is a malformed function" 537 (byte-compile-warn "`%s' is a malformed function"
539 (prin1-to-string fn)) 538 (prin1-to-string fn))
540 form) 539 form)
@@ -1455,8 +1454,7 @@
1455 byte-cdr-safe byte-cons byte-list1 byte-list2 byte-point byte-point-max 1454 byte-cdr-safe byte-cons byte-list1 byte-list2 byte-point byte-point-max
1456 byte-point-min byte-following-char byte-preceding-char 1455 byte-point-min byte-following-char byte-preceding-char
1457 byte-current-column byte-eolp byte-eobp byte-bolp byte-bobp 1456 byte-current-column byte-eolp byte-eobp byte-bolp byte-bobp
1458 byte-current-buffer byte-stack-ref ;; byte-closed-var 1457 byte-current-buffer byte-stack-ref))
1459 ))
1460 1458
1461(defconst byte-compile-side-effect-free-ops 1459(defconst byte-compile-side-effect-free-ops
1462 (nconc 1460 (nconc
@@ -2029,7 +2027,7 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance."
2029 (+ (cdr lap0) (cdr lap1)))) 2027 (+ (cdr lap0) (cdr lap1))))
2030 (setq lap (delq lap0 lap)) 2028 (setq lap (delq lap0 lap))
2031 (setcdr lap1 (+ (cdr lap1) (cdr lap0)))) 2029 (setcdr lap1 (+ (cdr lap1) (cdr lap0))))
2032 2030
2033 ;; 2031 ;;
2034 ;; stack-set-M [discard/discardN ...] --> discardN-preserve-tos 2032 ;; stack-set-M [discard/discardN ...] --> discardN-preserve-tos
2035 ;; stack-set-M [discard/discardN ...] --> discardN 2033 ;; stack-set-M [discard/discardN ...] --> discardN
@@ -2053,10 +2051,9 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance."
2053 (setq lap (delq lap0 lap)) 2051 (setq lap (delq lap0 lap))
2054 (setcar lap1 2052 (setcar lap1
2055 (if (= tmp2 tmp3) 2053 (if (= tmp2 tmp3)
2056 ;; The value stored is the new TOS, so pop 2054 ;; The value stored is the new TOS, so pop one more
2057 ;; one more value (to get rid of the old 2055 ;; value (to get rid of the old value) using the
2058 ;; value) using the TOS-preserving 2056 ;; TOS-preserving discard operator.
2059 ;; discard operator.
2060 'byte-discardN-preserve-tos 2057 'byte-discardN-preserve-tos
2061 ;; Otherwise, the value stored is lost, so just use a 2058 ;; Otherwise, the value stored is lost, so just use a
2062 ;; normal discard. 2059 ;; normal discard.
@@ -2071,8 +2068,7 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance."
2071 ;; discardN-(X+Y) 2068 ;; discardN-(X+Y)
2072 ;; 2069 ;;
2073 ((and (memq (car lap0) 2070 ((and (memq (car lap0)
2074 '(byte-discard 2071 '(byte-discard byte-discardN
2075 byte-discardN
2076 byte-discardN-preserve-tos)) 2072 byte-discardN-preserve-tos))
2077 (memq (car lap1) '(byte-discard byte-discardN))) 2073 (memq (car lap1) '(byte-discard byte-discardN)))
2078 (setq lap (delq lap0 lap)) 2074 (setq lap (delq lap0 lap))
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 5e671d7e694..7d259cda574 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -128,10 +128,6 @@
128 128
129;; The feature of compiling in a specific target Emacs version 129;; The feature of compiling in a specific target Emacs version
130;; has been turned off because compile time options are a bad idea. 130;; has been turned off because compile time options are a bad idea.
131(defmacro byte-compile-single-version () nil)
132(defmacro byte-compile-version-cond (cond) cond)
133
134
135(defgroup bytecomp nil 131(defgroup bytecomp nil
136 "Emacs Lisp byte-compiler." 132 "Emacs Lisp byte-compiler."
137 :group 'lisp) 133 :group 'lisp)
@@ -404,9 +400,7 @@ specify different fields to sort on."
404 :type '(choice (const name) (const callers) (const calls) 400 :type '(choice (const name) (const callers) (const calls)
405 (const calls+callers) (const nil))) 401 (const calls+callers) (const nil)))
406 402
407(defvar byte-compile-debug t) 403(defvar byte-compile-debug nil)
408(setq debug-on-error t)
409
410(defvar byte-compile-constants nil 404(defvar byte-compile-constants nil
411 "List of all constants encountered during compilation of this form.") 405 "List of all constants encountered during compilation of this form.")
412(defvar byte-compile-variables nil 406(defvar byte-compile-variables nil
@@ -465,7 +459,7 @@ Used for warnings about calling a function that is defined during compilation
465but won't necessarily be defined when the compiled file is loaded.") 459but won't necessarily be defined when the compiled file is loaded.")
466 460
467;; Variables for lexical binding 461;; Variables for lexical binding
468(defvar byte-compile-lexical-environment nil 462(defvar byte-compile--lexical-environment nil
469 "The current lexical environment.") 463 "The current lexical environment.")
470 464
471(defvar byte-compile-tag-number 0) 465(defvar byte-compile-tag-number 0)
@@ -586,6 +580,7 @@ Each element is (INDEX . VALUE)")
586(byte-defop 114 0 byte-save-current-buffer 580(byte-defop 114 0 byte-save-current-buffer
587 "To make a binding to record the current buffer") 581 "To make a binding to record the current buffer")
588(byte-defop 115 0 byte-set-mark-OBSOLETE) 582(byte-defop 115 0 byte-set-mark-OBSOLETE)
583;; (byte-defop 116 1 byte-interactive-p) ;Let's not use it any more.
589 584
590;; These ops are new to v19 585;; These ops are new to v19
591(byte-defop 117 0 byte-forward-char) 586(byte-defop 117 0 byte-forward-char)
@@ -621,6 +616,8 @@ otherwise pop it")
621 616
622(byte-defop 138 0 byte-save-excursion 617(byte-defop 138 0 byte-save-excursion
623 "to make a binding to record the buffer, point and mark") 618 "to make a binding to record the buffer, point and mark")
619;; (byte-defop 139 0 byte-save-window-excursion ; Obsolete: It's a macro now.
620;; "to make a binding to record entire window configuration")
624(byte-defop 140 0 byte-save-restriction 621(byte-defop 140 0 byte-save-restriction
625 "to make a binding to record the current buffer clipping restrictions") 622 "to make a binding to record the current buffer clipping restrictions")
626(byte-defop 141 -1 byte-catch 623(byte-defop 141 -1 byte-catch
@@ -632,16 +629,8 @@ otherwise pop it")
632;; an expression for the body, and a list of clauses. 629;; an expression for the body, and a list of clauses.
633(byte-defop 143 -2 byte-condition-case) 630(byte-defop 143 -2 byte-condition-case)
634 631
635;; For entry to with-output-to-temp-buffer. 632;; Obsolete: `with-output-to-temp-buffer' is a macro now.
636;; Takes, on stack, the buffer name.
637;; Binds standard-output and does some other things.
638;; Returns with temp buffer on the stack in place of buffer name.
639;; (byte-defop 144 0 byte-temp-output-buffer-setup) 633;; (byte-defop 144 0 byte-temp-output-buffer-setup)
640
641;; For exit from with-output-to-temp-buffer.
642;; Expects the temp buffer on the stack underneath value to return.
643;; Pops them both, then pushes the value back on.
644;; Unbinds standard-output and makes the temp buffer visible.
645;; (byte-defop 145 -1 byte-temp-output-buffer-show) 634;; (byte-defop 145 -1 byte-temp-output-buffer-show)
646 635
647;; these ops are new to v19 636;; these ops are new to v19
@@ -675,15 +664,14 @@ otherwise pop it")
675(byte-defop 168 0 byte-integerp) 664(byte-defop 168 0 byte-integerp)
676 665
677;; unused: 169-174 666;; unused: 169-174
678
679(byte-defop 175 nil byte-listN) 667(byte-defop 175 nil byte-listN)
680(byte-defop 176 nil byte-concatN) 668(byte-defop 176 nil byte-concatN)
681(byte-defop 177 nil byte-insertN) 669(byte-defop 177 nil byte-insertN)
682 670
683(byte-defop 178 -1 byte-stack-set) ; stack offset in following one byte 671(byte-defop 178 -1 byte-stack-set) ; Stack offset in following one byte.
684(byte-defop 179 -1 byte-stack-set2) ; stack offset in following two bytes 672(byte-defop 179 -1 byte-stack-set2) ; Stack offset in following two bytes.
685 673
686;; if (following one byte & 0x80) == 0 674;; If (following one byte & 0x80) == 0
687;; discard (following one byte & 0x7F) stack entries 675;; discard (following one byte & 0x7F) stack entries
688;; else 676;; else
689;; discard (following one byte & 0x7F) stack entries _underneath_ TOS 677;; discard (following one byte & 0x7F) stack entries _underneath_ TOS
@@ -776,12 +764,6 @@ CONST2 may be evaulated multiple times."
776 (error "Non-symbolic opcode `%s'" op)) 764 (error "Non-symbolic opcode `%s'" op))
777 ((eq op 'TAG) 765 ((eq op 'TAG)
778 (setcar off pc)) 766 (setcar off pc))
779 ((null op)
780 ;; a no-op added by `byte-compile-delay-out'
781 (unless (zerop off)
782 (error
783 "Placeholder added by `byte-compile-delay-out' not filled in.")
784 ))
785 (t 767 (t
786 (setq opcode 768 (setq opcode
787 (if (eq op 'byte-discardN-preserve-tos) 769 (if (eq op 'byte-discardN-preserve-tos)
@@ -793,13 +775,13 @@ CONST2 may be evaulated multiple times."
793 (cond ((memq op byte-goto-ops) 775 (cond ((memq op byte-goto-ops)
794 ;; goto 776 ;; goto
795 (byte-compile-push-bytecodes opcode nil (cdr off) bytes pc) 777 (byte-compile-push-bytecodes opcode nil (cdr off) bytes pc)
796 (push bytes patchlist)) 778 (push bytes patchlist))
797 ((or (and (consp off) 779 ((or (and (consp off)
798 ;; Variable or constant reference 780 ;; Variable or constant reference
799 (progn 781 (progn
800 (setq off (cdr off)) 782 (setq off (cdr off))
801 (eq op 'byte-constant))) 783 (eq op 'byte-constant)))
802 (and (eq op 'byte-constant) ;; 'byte-closed-var 784 (and (eq op 'byte-constant)
803 (integerp off))) 785 (integerp off)))
804 ;; constant ref 786 ;; constant ref
805 (if (< off byte-constant-limit) 787 (if (< off byte-constant-limit)
@@ -847,10 +829,9 @@ CONST2 may be evaulated multiple times."
847 bytes pc)))))) 829 bytes pc))))))
848 ;;(if (not (= pc (length bytes))) 830 ;;(if (not (= pc (length bytes)))
849 ;; (error "Compiler error: pc mismatch - %s %s" pc (length bytes))) 831 ;; (error "Compiler error: pc mismatch - %s %s" pc (length bytes)))
850 832 ;; Patch tag PCs into absolute jumps.
851 ;; Patch tag PCs into absolute jumps
852 (dolist (bytes-tail patchlist) 833 (dolist (bytes-tail patchlist)
853 (setq pc (caar bytes-tail)) ; Pick PC from goto's tag 834 (setq pc (caar bytes-tail)) ; Pick PC from goto's tag.
854 (setcar (cdr bytes-tail) (logand pc 255)) 835 (setcar (cdr bytes-tail) (logand pc 255))
855 (setcar bytes-tail (lsh pc -8)) 836 (setcar bytes-tail (lsh pc -8))
856 ;; FIXME: Replace this by some workaround. 837 ;; FIXME: Replace this by some workaround.
@@ -1861,10 +1842,10 @@ With argument ARG, insert value in current buffer after the form."
1861 1842
1862;; Dynamically bound in byte-compile-from-buffer. 1843;; Dynamically bound in byte-compile-from-buffer.
1863;; NB also used in cl.el and cl-macs.el. 1844;; NB also used in cl.el and cl-macs.el.
1864(defvar byte-compile-outbuffer) 1845(defvar byte-compile--outbuffer)
1865 1846
1866(defun byte-compile-from-buffer (inbuffer) 1847(defun byte-compile-from-buffer (inbuffer)
1867 (let (byte-compile-outbuffer 1848 (let (byte-compile--outbuffer
1868 (byte-compile-current-buffer inbuffer) 1849 (byte-compile-current-buffer inbuffer)
1869 (byte-compile-read-position nil) 1850 (byte-compile-read-position nil)
1870 (byte-compile-last-position nil) 1851 (byte-compile-last-position nil)
@@ -1893,7 +1874,8 @@ With argument ARG, insert value in current buffer after the form."
1893 ) 1874 )
1894 (byte-compile-close-variables 1875 (byte-compile-close-variables
1895 (with-current-buffer 1876 (with-current-buffer
1896 (setq byte-compile-outbuffer (get-buffer-create " *Compiler Output*")) 1877 (setq byte-compile--outbuffer
1878 (get-buffer-create " *Compiler Output*"))
1897 (set-buffer-multibyte t) 1879 (set-buffer-multibyte t)
1898 (erase-buffer) 1880 (erase-buffer)
1899 ;; (emacs-lisp-mode) 1881 ;; (emacs-lisp-mode)
@@ -1902,7 +1884,7 @@ With argument ARG, insert value in current buffer after the form."
1902 (with-current-buffer inbuffer 1884 (with-current-buffer inbuffer
1903 (and byte-compile-current-file 1885 (and byte-compile-current-file
1904 (byte-compile-insert-header byte-compile-current-file 1886 (byte-compile-insert-header byte-compile-current-file
1905 byte-compile-outbuffer)) 1887 byte-compile--outbuffer))
1906 (goto-char (point-min)) 1888 (goto-char (point-min))
1907 ;; Should we always do this? When calling multiple files, it 1889 ;; Should we always do this? When calling multiple files, it
1908 ;; would be useful to delay this warning until all have been 1890 ;; would be useful to delay this warning until all have been
@@ -1935,9 +1917,9 @@ and will be removed soon. See (elisp)Backquote in the manual."))
1935 ;; Fix up the header at the front of the output 1917 ;; Fix up the header at the front of the output
1936 ;; if the buffer contains multibyte characters. 1918 ;; if the buffer contains multibyte characters.
1937 (and byte-compile-current-file 1919 (and byte-compile-current-file
1938 (with-current-buffer byte-compile-outbuffer 1920 (with-current-buffer byte-compile--outbuffer
1939 (byte-compile-fix-header byte-compile-current-file))))) 1921 (byte-compile-fix-header byte-compile-current-file)))))
1940 byte-compile-outbuffer)) 1922 byte-compile--outbuffer))
1941 1923
1942(defun byte-compile-fix-header (filename) 1924(defun byte-compile-fix-header (filename)
1943 "If the current buffer has any multibyte characters, insert a version test." 1925 "If the current buffer has any multibyte characters, insert a version test."
@@ -2046,8 +2028,8 @@ Call from the source buffer."
2046 (print-gensym t) 2028 (print-gensym t)
2047 (print-circle ; handle circular data structures 2029 (print-circle ; handle circular data structures
2048 (not byte-compile-disable-print-circle))) 2030 (not byte-compile-disable-print-circle)))
2049 (princ "\n" byte-compile-outbuffer) 2031 (princ "\n" byte-compile--outbuffer)
2050 (prin1 form byte-compile-outbuffer) 2032 (prin1 form byte-compile--outbuffer)
2051 nil))) 2033 nil)))
2052 2034
2053(defvar print-gensym-alist) ;Used before print-circle existed. 2035(defvar print-gensym-alist) ;Used before print-circle existed.
@@ -2067,7 +2049,7 @@ list that represents a doc string reference.
2067 ;; We need to examine byte-compile-dynamic-docstrings 2049 ;; We need to examine byte-compile-dynamic-docstrings
2068 ;; in the input buffer (now current), not in the output buffer. 2050 ;; in the input buffer (now current), not in the output buffer.
2069 (let ((dynamic-docstrings byte-compile-dynamic-docstrings)) 2051 (let ((dynamic-docstrings byte-compile-dynamic-docstrings))
2070 (with-current-buffer byte-compile-outbuffer 2052 (with-current-buffer byte-compile--outbuffer
2071 (let (position) 2053 (let (position)
2072 2054
2073 ;; Insert the doc string, and make it a comment with #@LENGTH. 2055 ;; Insert the doc string, and make it a comment with #@LENGTH.
@@ -2091,7 +2073,7 @@ list that represents a doc string reference.
2091 (if preface 2073 (if preface
2092 (progn 2074 (progn
2093 (insert preface) 2075 (insert preface)
2094 (prin1 name byte-compile-outbuffer))) 2076 (prin1 name byte-compile--outbuffer)))
2095 (insert (car info)) 2077 (insert (car info))
2096 (let ((print-escape-newlines t) 2078 (let ((print-escape-newlines t)
2097 (print-quoted t) 2079 (print-quoted t)
@@ -2106,7 +2088,7 @@ list that represents a doc string reference.
2106 (print-continuous-numbering t) 2088 (print-continuous-numbering t)
2107 print-number-table 2089 print-number-table
2108 (index 0)) 2090 (index 0))
2109 (prin1 (car form) byte-compile-outbuffer) 2091 (prin1 (car form) byte-compile--outbuffer)
2110 (while (setq form (cdr form)) 2092 (while (setq form (cdr form))
2111 (setq index (1+ index)) 2093 (setq index (1+ index))
2112 (insert " ") 2094 (insert " ")
@@ -2129,21 +2111,22 @@ list that represents a doc string reference.
2129 (setq position (- (position-bytes position) 2111 (setq position (- (position-bytes position)
2130 (point-min) -1)) 2112 (point-min) -1))
2131 (princ (format "(#$ . %d) nil" position) 2113 (princ (format "(#$ . %d) nil" position)
2132 byte-compile-outbuffer) 2114 byte-compile--outbuffer)
2133 (setq form (cdr form)) 2115 (setq form (cdr form))
2134 (setq index (1+ index)))) 2116 (setq index (1+ index))))
2135 ((= index (nth 1 info)) 2117 ((= index (nth 1 info))
2136 (if position 2118 (if position
2137 (princ (format (if quoted "'(#$ . %d)" "(#$ . %d)") 2119 (princ (format (if quoted "'(#$ . %d)" "(#$ . %d)")
2138 position) 2120 position)
2139 byte-compile-outbuffer) 2121 byte-compile--outbuffer)
2140 (let ((print-escape-newlines nil)) 2122 (let ((print-escape-newlines nil))
2141 (goto-char (prog1 (1+ (point)) 2123 (goto-char (prog1 (1+ (point))
2142 (prin1 (car form) byte-compile-outbuffer))) 2124 (prin1 (car form)
2125 byte-compile--outbuffer)))
2143 (insert "\\\n") 2126 (insert "\\\n")
2144 (goto-char (point-max))))) 2127 (goto-char (point-max)))))
2145 (t 2128 (t
2146 (prin1 (car form) byte-compile-outbuffer))))) 2129 (prin1 (car form) byte-compile--outbuffer)))))
2147 (insert (nth 2 info))))) 2130 (insert (nth 2 info)))))
2148 nil) 2131 nil)
2149 2132
@@ -2428,7 +2411,7 @@ by side-effects."
2428 ;; Remove declarations from the body of the macro definition. 2411 ;; Remove declarations from the body of the macro definition.
2429 (when macrop 2412 (when macrop
2430 (dolist (decl (byte-compile-defmacro-declaration form)) 2413 (dolist (decl (byte-compile-defmacro-declaration form))
2431 (prin1 decl byte-compile-outbuffer))) 2414 (prin1 decl byte-compile--outbuffer)))
2432 2415
2433 (let* ((code (byte-compile-lambda (nthcdr 2 form) t))) 2416 (let* ((code (byte-compile-lambda (nthcdr 2 form) t)))
2434 (if this-one 2417 (if this-one
@@ -2458,7 +2441,7 @@ by side-effects."
2458 (and (atom code) byte-compile-dynamic 2441 (and (atom code) byte-compile-dynamic
2459 1) 2442 1)
2460 nil)) 2443 nil))
2461 (princ ")" byte-compile-outbuffer) 2444 (princ ")" byte-compile--outbuffer)
2462 nil))) 2445 nil)))
2463 2446
2464;; Print Lisp object EXP in the output file, inside a comment, 2447;; Print Lisp object EXP in the output file, inside a comment,
@@ -2466,13 +2449,13 @@ by side-effects."
2466;; If QUOTED is non-nil, print with quoting; otherwise, print without quoting. 2449;; If QUOTED is non-nil, print with quoting; otherwise, print without quoting.
2467(defun byte-compile-output-as-comment (exp quoted) 2450(defun byte-compile-output-as-comment (exp quoted)
2468 (let ((position (point))) 2451 (let ((position (point)))
2469 (with-current-buffer byte-compile-outbuffer 2452 (with-current-buffer byte-compile--outbuffer
2470 2453
2471 ;; Insert EXP, and make it a comment with #@LENGTH. 2454 ;; Insert EXP, and make it a comment with #@LENGTH.
2472 (insert " ") 2455 (insert " ")
2473 (if quoted 2456 (if quoted
2474 (prin1 exp byte-compile-outbuffer) 2457 (prin1 exp byte-compile--outbuffer)
2475 (princ exp byte-compile-outbuffer)) 2458 (princ exp byte-compile--outbuffer))
2476 (goto-char position) 2459 (goto-char position)
2477 ;; Quote certain special characters as needed. 2460 ;; Quote certain special characters as needed.
2478 ;; get_doc_string in doc.c does the unquoting. 2461 ;; get_doc_string in doc.c does the unquoting.
@@ -2732,7 +2715,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
2732 (byte-compile-tag-number 0) 2715 (byte-compile-tag-number 0)
2733 (byte-compile-depth 0) 2716 (byte-compile-depth 0)
2734 (byte-compile-maxdepth 0) 2717 (byte-compile-maxdepth 0)
2735 (byte-compile-lexical-environment lexenv) 2718 (byte-compile--lexical-environment lexenv)
2736 (byte-compile-reserved-constants (or reserved-csts 0)) 2719 (byte-compile-reserved-constants (or reserved-csts 0))
2737 (byte-compile-output nil)) 2720 (byte-compile-output nil))
2738 (if (memq byte-optimize '(t source)) 2721 (if (memq byte-optimize '(t source))
@@ -2743,7 +2726,7 @@ If FORM is a lambda or a macro, byte-compile it as a function."
2743 (when (and lexical-binding (eq output-type 'lambda)) 2726 (when (and lexical-binding (eq output-type 'lambda))
2744 ;; See how many arguments there are, and set the current stack depth 2727 ;; See how many arguments there are, and set the current stack depth
2745 ;; accordingly. 2728 ;; accordingly.
2746 (setq byte-compile-depth (length byte-compile-lexical-environment)) 2729 (setq byte-compile-depth (length byte-compile--lexical-environment))
2747 ;; If there are args, output a tag to record the initial 2730 ;; If there are args, output a tag to record the initial
2748 ;; stack-depth for the optimizer. 2731 ;; stack-depth for the optimizer.
2749 (when (> byte-compile-depth 0) 2732 (when (> byte-compile-depth 0)
@@ -2789,7 +2772,6 @@ If FORM is a lambda or a macro, byte-compile it as a function."
2789 ;; progn -> as <<same-as-eval>> or (progn <<same-as-eval>> atom) 2772 ;; progn -> as <<same-as-eval>> or (progn <<same-as-eval>> atom)
2790 ;; file -> as progn, but takes both quotes and atoms, and longer forms. 2773 ;; file -> as progn, but takes both quotes and atoms, and longer forms.
2791 (let (rest 2774 (let (rest
2792 (byte-compile--for-effect for-effect) ;FIXME: Probably unused!
2793 (maycall (not (eq output-type 'lambda))) ; t if we may make a funcall. 2775 (maycall (not (eq output-type 'lambda))) ; t if we may make a funcall.
2794 tmp body) 2776 tmp body)
2795 (cond 2777 (cond
@@ -2975,6 +2957,7 @@ That command is designed for interactive use only" fn))
2975 (byte-compile-out-tag endtag))) 2957 (byte-compile-out-tag endtag)))
2976 2958
2977(defun byte-compile-unfold-bcf (form) 2959(defun byte-compile-unfold-bcf (form)
2960 "Inline call to byte-code-functions."
2978 (let* ((byte-compile-bound-variables byte-compile-bound-variables) 2961 (let* ((byte-compile-bound-variables byte-compile-bound-variables)
2979 (fun (car form)) 2962 (fun (car form))
2980 (fargs (aref fun 0)) 2963 (fargs (aref fun 0))
@@ -3056,7 +3039,7 @@ If BINDING is non-nil, VAR is being bound."
3056(defun byte-compile-variable-ref (var) 3039(defun byte-compile-variable-ref (var)
3057 "Generate code to push the value of the variable VAR on the stack." 3040 "Generate code to push the value of the variable VAR on the stack."
3058 (byte-compile-check-variable var) 3041 (byte-compile-check-variable var)
3059 (let ((lex-binding (assq var byte-compile-lexical-environment))) 3042 (let ((lex-binding (assq var byte-compile--lexical-environment)))
3060 (if lex-binding 3043 (if lex-binding
3061 ;; VAR is lexically bound 3044 ;; VAR is lexically bound
3062 (byte-compile-stack-ref (cdr lex-binding)) 3045 (byte-compile-stack-ref (cdr lex-binding))
@@ -3072,7 +3055,7 @@ If BINDING is non-nil, VAR is being bound."
3072(defun byte-compile-variable-set (var) 3055(defun byte-compile-variable-set (var)
3073 "Generate code to set the variable VAR from the top-of-stack value." 3056 "Generate code to set the variable VAR from the top-of-stack value."
3074 (byte-compile-check-variable var) 3057 (byte-compile-check-variable var)
3075 (let ((lex-binding (assq var byte-compile-lexical-environment))) 3058 (let ((lex-binding (assq var byte-compile--lexical-environment)))
3076 (if lex-binding 3059 (if lex-binding
3077 ;; VAR is lexically bound 3060 ;; VAR is lexically bound
3078 (byte-compile-stack-set (cdr lex-binding)) 3061 (byte-compile-stack-set (cdr lex-binding))
@@ -3181,6 +3164,7 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
3181(byte-defop-compiler bobp 0) 3164(byte-defop-compiler bobp 0)
3182(byte-defop-compiler current-buffer 0) 3165(byte-defop-compiler current-buffer 0)
3183;;(byte-defop-compiler read-char 0) ;; obsolete 3166;;(byte-defop-compiler read-char 0) ;; obsolete
3167;; (byte-defop-compiler interactive-p 0) ;; Obsolete.
3184(byte-defop-compiler widen 0) 3168(byte-defop-compiler widen 0)
3185(byte-defop-compiler end-of-line 0-1) 3169(byte-defop-compiler end-of-line 0-1)
3186(byte-defop-compiler forward-char 0-1) 3170(byte-defop-compiler forward-char 0-1)
@@ -3355,6 +3339,7 @@ discarding."
3355(defconst byte-compile--env-var (make-symbol "env")) 3339(defconst byte-compile--env-var (make-symbol "env"))
3356 3340
3357(defun byte-compile-make-closure (form) 3341(defun byte-compile-make-closure (form)
3342 "Byte-compile the special `internal-make-closure' form."
3358 (if byte-compile--for-effect (setq byte-compile--for-effect nil) 3343 (if byte-compile--for-effect (setq byte-compile--for-effect nil)
3359 (let* ((vars (nth 1 form)) 3344 (let* ((vars (nth 1 form))
3360 (env (nth 2 form)) 3345 (env (nth 2 form))
@@ -3366,12 +3351,11 @@ discarding."
3366 ',(aref fun 0) ',(aref fun 1) 3351 ',(aref fun 0) ',(aref fun 1)
3367 (vconcat (vector . ,env) ',(aref fun 2)) 3352 (vconcat (vector . ,env) ',(aref fun 2))
3368 ,@(nthcdr 3 (mapcar (lambda (x) `',x) fun))))))) 3353 ,@(nthcdr 3 (mapcar (lambda (x) `',x) fun)))))))
3369
3370 3354
3371(defun byte-compile-get-closed-var (form) 3355(defun byte-compile-get-closed-var (form)
3356 "Byte-compile the special `internal-get-closed-var' form."
3372 (if byte-compile--for-effect (setq byte-compile--for-effect nil) 3357 (if byte-compile--for-effect (setq byte-compile--for-effect nil)
3373 (byte-compile-out 'byte-constant ;; byte-closed-var 3358 (byte-compile-out 'byte-constant (nth 1 form))))
3374 (nth 1 form))))
3375 3359
3376;; Compile a function that accepts one or more args and is right-associative. 3360;; Compile a function that accepts one or more args and is right-associative.
3377;; We do it by left-associativity so that the operations 3361;; We do it by left-associativity so that the operations
@@ -3856,7 +3840,7 @@ Return the offset in the form (VAR . OFFSET)."
3856 (keywordp var))) 3840 (keywordp var)))
3857 3841
3858(defun byte-compile-bind (var init-lexenv) 3842(defun byte-compile-bind (var init-lexenv)
3859 "Emit byte-codes to bind VAR and update `byte-compile-lexical-environment'. 3843 "Emit byte-codes to bind VAR and update `byte-compile--lexical-environment'.
3860INIT-LEXENV should be a lexical-environment alist describing the 3844INIT-LEXENV should be a lexical-environment alist describing the
3861positions of the init value that have been pushed on the stack. 3845positions of the init value that have been pushed on the stack.
3862Return non-nil if the TOS value was popped." 3846Return non-nil if the TOS value was popped."
@@ -3866,7 +3850,7 @@ Return non-nil if the TOS value was popped."
3866 (cond ((not (byte-compile-not-lexical-var-p var)) 3850 (cond ((not (byte-compile-not-lexical-var-p var))
3867 ;; VAR is a simple stack-allocated lexical variable 3851 ;; VAR is a simple stack-allocated lexical variable
3868 (push (assq var init-lexenv) 3852 (push (assq var init-lexenv)
3869 byte-compile-lexical-environment) 3853 byte-compile--lexical-environment)
3870 nil) 3854 nil)
3871 ((eq var (caar init-lexenv)) 3855 ((eq var (caar init-lexenv))
3872 ;; VAR is dynamic and is on the top of the 3856 ;; VAR is dynamic and is on the top of the
@@ -3898,7 +3882,7 @@ binding slots have been popped."
3898 (let ((num-dynamic-bindings 0)) 3882 (let ((num-dynamic-bindings 0))
3899 (dolist (clause clauses) 3883 (dolist (clause clauses)
3900 (unless (assq (if (consp clause) (car clause) clause) 3884 (unless (assq (if (consp clause) (car clause) clause)
3901 byte-compile-lexical-environment) 3885 byte-compile--lexical-environment)
3902 (setq num-dynamic-bindings (1+ num-dynamic-bindings)))) 3886 (setq num-dynamic-bindings (1+ num-dynamic-bindings))))
3903 (unless (zerop num-dynamic-bindings) 3887 (unless (zerop num-dynamic-bindings)
3904 (byte-compile-out 'byte-unbind num-dynamic-bindings))) 3888 (byte-compile-out 'byte-unbind num-dynamic-bindings)))
@@ -3918,7 +3902,8 @@ binding slots have been popped."
3918 (push (byte-compile-push-binding-init var) init-lexenv))) 3902 (push (byte-compile-push-binding-init var) init-lexenv)))
3919 ;; New scope. 3903 ;; New scope.
3920 (let ((byte-compile-bound-variables byte-compile-bound-variables) 3904 (let ((byte-compile-bound-variables byte-compile-bound-variables)
3921 (byte-compile-lexical-environment byte-compile-lexical-environment)) 3905 (byte-compile--lexical-environment
3906 byte-compile--lexical-environment))
3922 ;; Bind the variables. 3907 ;; Bind the variables.
3923 ;; For `let', do it in reverse order, because it makes no 3908 ;; For `let', do it in reverse order, because it makes no
3924 ;; semantic difference, but it is a lot more efficient since the 3909 ;; semantic difference, but it is a lot more efficient since the
@@ -3969,7 +3954,6 @@ binding slots have been popped."
3969 "Compiler error: `%s' has no `byte-compile-negated-op' property" 3954 "Compiler error: `%s' has no `byte-compile-negated-op' property"
3970 (car form))) 3955 (car form)))
3971 (cdr form)))) 3956 (cdr form))))
3972
3973 3957
3974;;; other tricky macro-like special-forms 3958;;; other tricky macro-like special-forms
3975 3959
@@ -3979,6 +3963,8 @@ binding slots have been popped."
3979(byte-defop-compiler-1 save-excursion) 3963(byte-defop-compiler-1 save-excursion)
3980(byte-defop-compiler-1 save-current-buffer) 3964(byte-defop-compiler-1 save-current-buffer)
3981(byte-defop-compiler-1 save-restriction) 3965(byte-defop-compiler-1 save-restriction)
3966;; (byte-defop-compiler-1 save-window-excursion) ;Obsolete: now a macro.
3967;; (byte-defop-compiler-1 with-output-to-temp-buffer) ;Obsolete: now a macro.
3982(byte-defop-compiler-1 track-mouse) 3968(byte-defop-compiler-1 track-mouse)
3983 3969
3984(defun byte-compile-catch (form) 3970(defun byte-compile-catch (form)
@@ -4286,7 +4272,7 @@ OP and OPERAND are as passed to `byte-compile-out'."
4286 ;; that take OPERAND values off the stack and push a result, for 4272 ;; that take OPERAND values off the stack and push a result, for
4287 ;; a total of 1 - OPERAND 4273 ;; a total of 1 - OPERAND
4288 (- 1 operand)))) 4274 (- 1 operand))))
4289 4275
4290(defun byte-compile-out (op &optional operand) 4276(defun byte-compile-out (op &optional operand)
4291 (push (cons op operand) byte-compile-output) 4277 (push (cons op operand) byte-compile-output)
4292 (if (eq op 'byte-return) 4278 (if (eq op 'byte-return)
@@ -4298,50 +4284,6 @@ OP and OPERAND are as passed to `byte-compile-out'."
4298 (setq byte-compile-maxdepth (max byte-compile-depth byte-compile-maxdepth)) 4284 (setq byte-compile-maxdepth (max byte-compile-depth byte-compile-maxdepth))
4299 ;;(if (< byte-compile-depth 0) (error "Compiler error: stack underflow")) 4285 ;;(if (< byte-compile-depth 0) (error "Compiler error: stack underflow"))
4300 )) 4286 ))
4301
4302(defun byte-compile-delay-out (&optional stack-used stack-adjust)
4303 "Add a placeholder to the output, which can be used to later add byte-codes.
4304Return a position tag that can be passed to `byte-compile-delayed-out'
4305to add the delayed byte-codes. STACK-USED is the maximum amount of
4306stack-spaced used by the delayed byte-codes (defaulting to 0), and
4307STACK-ADJUST is the amount by which the later-added code will adjust the
4308stack (defaulting to 0); the byte-codes added later _must_ adjust the
4309stack by this amount! If STACK-ADJUST is 0, then it's not necessary to
4310actually add anything later; the effect as if nothing was added at all."
4311 ;; We just add a no-op to `byte-compile-output', and return a pointer to
4312 ;; the tail of the list; `byte-compile-delayed-out' uses list surgery
4313 ;; to add the byte-codes.
4314 (when stack-used
4315 (setq byte-compile-maxdepth
4316 (max byte-compile-depth (+ byte-compile-depth (or stack-used 0)))))
4317 (when stack-adjust
4318 (setq byte-compile-depth
4319 (+ byte-compile-depth stack-adjust)))
4320 (push (cons nil (or stack-adjust 0)) byte-compile-output))
4321
4322(defun byte-compile-delayed-out (position op &optional operand)
4323 "Add at POSITION the byte-operation OP, with optional numeric arg OPERAND.
4324POSITION should a position returned by `byte-compile-delay-out'.
4325Return a new position, which can be used to add further operations."
4326 (unless (null (caar position))
4327 (error "Bad POSITION arg to `byte-compile-delayed-out'"))
4328 ;; This is kind of like `byte-compile-out', but we splice into the list
4329 ;; where POSITION is. We don't bother updating `byte-compile-maxdepth'
4330 ;; because that was already done by `byte-compile-delay-out', but we do
4331 ;; update the relative operand stored in the no-op marker currently at
4332 ;; POSITION; since we insert before that marker, this means that if the
4333 ;; caller doesn't insert a sequence of byte-codes that matches the expected
4334 ;; operand passed to `byte-compile-delay-out', then the nop will still have
4335 ;; a non-zero operand when `byte-compile-lapcode' is called, which will
4336 ;; cause an error to be signaled.
4337
4338 ;; Adjust the cumulative stack-adjustment stored in the cdr of the no-op
4339 (setcdr (car position)
4340 (- (cdar position) (byte-compile-stack-adjustment op operand)))
4341 ;; Add the new operation onto the list tail at POSITION
4342 (setcdr position (cons (cons op operand) (cdr position)))
4343 position)
4344
4345 4287
4346;;; call tree stuff 4288;;; call tree stuff
4347 4289
diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el
index 46d14880a2c..5cc9ecb4cf7 100644
--- a/lisp/emacs-lisp/cconv.el
+++ b/lisp/emacs-lisp/cconv.el
@@ -67,15 +67,23 @@
67 67
68;; TODO: (not just for cconv but also for the lexbind changes in general) 68;; TODO: (not just for cconv but also for the lexbind changes in general)
69;; - let (e)debug find the value of lexical variables from the stack. 69;; - let (e)debug find the value of lexical variables from the stack.
70;; - make eval-region do the eval-sexp-add-defvars danse.
70;; - byte-optimize-form should be applied before cconv. 71;; - byte-optimize-form should be applied before cconv.
71;; OTOH, the warnings emitted by cconv-analyze need to come before optimize 72;; OTOH, the warnings emitted by cconv-analyze need to come before optimize
72;; since afterwards they can because obnoxious (warnings about an "unused 73;; since afterwards they can because obnoxious (warnings about an "unused
73;; variable" should not be emitted when the variable use has simply been 74;; variable" should not be emitted when the variable use has simply been
74;; optimized away). 75;; optimized away).
76;; - turn defun and defmacro into macros (and remove special handling of
77;; `declare' afterwards).
78;; - let macros specify that some let-bindings come from the same source,
79;; so the unused warning takes all uses into account.
80;; - let interactive specs return a function to build the args (to stash into
81;; command-history).
75;; - canonize code in macro-expand so we don't have to handle (let (var) body) 82;; - canonize code in macro-expand so we don't have to handle (let (var) body)
76;; and other oddities. 83;; and other oddities.
77;; - new byte codes for unwind-protect, catch, and condition-case so that 84;; - new byte codes for unwind-protect, catch, and condition-case so that
78;; closures aren't needed at all. 85;; closures aren't needed at all.
86;; - inline source code of different binding mode by first compiling it.
79;; - a reference to a var that is known statically to always hold a constant 87;; - a reference to a var that is known statically to always hold a constant
80;; should be turned into a byte-constant rather than a byte-stack-ref. 88;; should be turned into a byte-constant rather than a byte-stack-ref.
81;; Hmm... right, that's called constant propagation and could be done here, 89;; Hmm... right, that's called constant propagation and could be done here,
diff --git a/lisp/emacs-lisp/cl-loaddefs.el b/lisp/emacs-lisp/cl-loaddefs.el
index 8bcbd67f46b..4c824d4a6d4 100644
--- a/lisp/emacs-lisp/cl-loaddefs.el
+++ b/lisp/emacs-lisp/cl-loaddefs.el
@@ -282,7 +282,7 @@ Not documented
282;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist 282;;;;;; flet progv psetq do-all-symbols do-symbols dotimes dolist
283;;;;;; do* do loop return-from return block etypecase typecase ecase 283;;;;;; do* do loop return-from return block etypecase typecase ecase
284;;;;;; case load-time-value eval-when destructuring-bind function* 284;;;;;; case load-time-value eval-when destructuring-bind function*
285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "c4734fbda33043d967624d39d80c3304") 285;;;;;; defmacro* defun* gentemp gensym) "cl-macs" "cl-macs.el" "fe8a5acbe14e32846a77578b2165fab5")
286;;; Generated autoloads from cl-macs.el 286;;; Generated autoloads from cl-macs.el
287 287
288(autoload 'gensym "cl-macs" "\ 288(autoload 'gensym "cl-macs" "\
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 7aac5bdaa01..9ce3dd6a7fe 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -497,7 +497,7 @@ The result of the body appears to the compiler as a quoted constant."
497 (symbol-function 'byte-compile-file-form))) 497 (symbol-function 'byte-compile-file-form)))
498 (list 'byte-compile-file-form (list 'quote set)) 498 (list 'byte-compile-file-form (list 'quote set))
499 '(byte-compile-file-form form))) 499 '(byte-compile-file-form form)))
500 (print set (symbol-value 'byte-compile-outbuffer))) 500 (print set (symbol-value 'byte-compile--outbuffer)))
501 (list 'symbol-value (list 'quote temp))) 501 (list 'symbol-value (list 'quote temp)))
502 (list 'quote (eval form)))) 502 (list 'quote (eval form))))
503 503
diff --git a/lisp/emacs-lisp/cl.el b/lisp/emacs-lisp/cl.el
index 9c626dfcfa3..526475eb1bd 100644
--- a/lisp/emacs-lisp/cl.el
+++ b/lisp/emacs-lisp/cl.el
@@ -278,9 +278,9 @@ definitions to shadow the loaded ones for use in file byte-compilation.
278(defvar cl-compiling-file nil) 278(defvar cl-compiling-file nil)
279(defun cl-compiling-file () 279(defun cl-compiling-file ()
280 (or cl-compiling-file 280 (or cl-compiling-file
281 (and (boundp 'byte-compile-outbuffer) 281 (and (boundp 'byte-compile--outbuffer)
282 (bufferp (symbol-value 'byte-compile-outbuffer)) 282 (bufferp (symbol-value 'byte-compile--outbuffer))
283 (equal (buffer-name (symbol-value 'byte-compile-outbuffer)) 283 (equal (buffer-name (symbol-value 'byte-compile--outbuffer))
284 " *Compiler Output*")))) 284 " *Compiler Output*"))))
285 285
286(defvar cl-proclaims-deferred nil) 286(defvar cl-proclaims-deferred nil)
diff --git a/lisp/emacs-lisp/disass.el b/lisp/emacs-lisp/disass.el
index 9318876fe61..4fd10185c17 100644
--- a/lisp/emacs-lisp/disass.el
+++ b/lisp/emacs-lisp/disass.el
@@ -72,7 +72,6 @@ redefine OBJECT if it is a symbol."
72 (let ((macro 'nil) 72 (let ((macro 'nil)
73 (name 'nil) 73 (name 'nil)
74 (doc 'nil) 74 (doc 'nil)
75 (lexical-binding nil)
76 args) 75 args)
77 (while (symbolp obj) 76 (while (symbolp obj)
78 (setq name obj 77 (setq name obj
diff --git a/lisp/emacs-lisp/edebug.el b/lisp/emacs-lisp/edebug.el
index 8135b5c4f24..f84de0308bf 100644
--- a/lisp/emacs-lisp/edebug.el
+++ b/lisp/emacs-lisp/edebug.el
@@ -3640,7 +3640,7 @@ Return the result of the last expression."
3640 (eval (if (bound-and-true-p cl-debug-env) 3640 (eval (if (bound-and-true-p cl-debug-env)
3641 (cl-macroexpand-all edebug-expr cl-debug-env) 3641 (cl-macroexpand-all edebug-expr cl-debug-env)
3642 edebug-expr) 3642 edebug-expr)
3643 lexical-binding)) ;; FIXME: lexbind. 3643 lexical-binding))
3644 3644
3645(defun edebug-safe-eval (edebug-expr) 3645(defun edebug-safe-eval (edebug-expr)
3646 ;; Evaluate EXPR safely. 3646 ;; Evaluate EXPR safely.
diff --git a/lisp/emacs-lisp/eieio.el b/lisp/emacs-lisp/eieio.el
index 4e443452d8b..7a119e6bbc0 100644
--- a/lisp/emacs-lisp/eieio.el
+++ b/lisp/emacs-lisp/eieio.el
@@ -96,6 +96,7 @@ default setting for optimization purposes.")
96 "Non-nil means to optimize the method dispatch on primary methods.") 96 "Non-nil means to optimize the method dispatch on primary methods.")
97 97
98;; State Variables 98;; State Variables
99;; FIXME: These two constants below should have an `eieio-' prefix added!!
99(defvar this nil 100(defvar this nil
100 "Inside a method, this variable is the object in question. 101 "Inside a method, this variable is the object in question.
101DO NOT SET THIS YOURSELF unless you are trying to simulate friendly slots. 102DO NOT SET THIS YOURSELF unless you are trying to simulate friendly slots.
@@ -122,7 +123,7 @@ execute a `call-next-method'. DO NOT SET THIS YOURSELF!")
122;; while it is being built itself. 123;; while it is being built itself.
123(defvar eieio-default-superclass nil) 124(defvar eieio-default-superclass nil)
124 125
125;; FIXME: The constants below should have a `eieio-' prefix added!! 126;; FIXME: The constants below should have an `eieio-' prefix added!!
126(defconst class-symbol 1 "Class's symbol (self-referencing.).") 127(defconst class-symbol 1 "Class's symbol (self-referencing.).")
127(defconst class-parent 2 "Class parent slot.") 128(defconst class-parent 2 "Class parent slot.")
128(defconst class-children 3 "Class children class slot.") 129(defconst class-children 3 "Class children class slot.")
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 408774fbbf1..39bdb505039 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -745,7 +745,7 @@ POS specifies the starting position where EXP was found and defaults to point."
745 (unless (special-variable-p var) 745 (unless (special-variable-p var)
746 (push var vars)))) 746 (push var vars))))
747 `(progn ,@(mapcar (lambda (v) `(defvar ,v)) vars) ,exp))))) 747 `(progn ,@(mapcar (lambda (v) `(defvar ,v)) vars) ,exp)))))
748 748
749(defun eval-last-sexp (eval-last-sexp-arg-internal) 749(defun eval-last-sexp (eval-last-sexp-arg-internal)
750 "Evaluate sexp before point; print value in minibuffer. 750 "Evaluate sexp before point; print value in minibuffer.
751Interactively, with prefix argument, print output into current buffer. 751Interactively, with prefix argument, print output into current buffer.