1143 |
;;; (foo)) |
;;; (foo)) |
1144 |
;;; Further optimizations will turn (progn (list 1 2 3) 'foo) into 'foo. |
;;; Further optimizations will turn (progn (list 1 2 3) 'foo) into 'foo. |
1145 |
|
|
1146 |
|
;;; Some of these functions have the side effect of allocating memory |
1147 |
|
;;; and it would be incorrect to replace two calls with one. |
1148 |
|
;;; But we don't try to do those kinds of optimizations, |
1149 |
|
;;; so it is safe to list such functions here. |
1150 |
|
;;; Some of these functions return values that depend on environment |
1151 |
|
;;; state, so that constant folding them would be wrong, |
1152 |
|
;;; but we don't do constant folding based on this list. |
1153 |
|
|
1154 |
;;; I wonder if I missed any :-\) |
;;; I wonder if I missed any :-\) |
1155 |
(let ((side-effect-free-fns |
(let ((side-effect-free-fns |
1156 |
'(% * + - / /= 1+ 1- < <= = > >= abs acos append aref ash asin atan |
'(% * + - / /= 1+ 1- < <= = > >= abs acos append aref ash asin atan |
1157 |
assoc assq |
assoc assq |
1158 |
boundp buffer-file-name buffer-local-variables buffer-modified-p |
boundp buffer-file-name buffer-local-variables buffer-modified-p |
1159 |
buffer-substring |
buffer-substring byte-code-function-p |
1160 |
capitalize car-less-than-car car cdr ceiling char-after char-before |
capitalize car-less-than-car car cdr ceiling char-after char-before |
1161 |
concat coordinates-in-window-p |
char-equal char-to-string char-width |
1162 |
char-width copy-marker cos count-lines |
compare-strings concat coordinates-in-window-p |
1163 |
default-boundp default-value documentation downcase |
copy-alist copy-sequence copy-marker cos count-lines |
1164 |
elt exp expt fboundp featurep |
decode-time default-boundp default-value documentation downcase |
1165 |
|
elt exp expt encode-time error-message-string |
1166 |
|
fboundp fceiling featurep ffloor |
1167 |
file-directory-p file-exists-p file-locked-p file-name-absolute-p |
file-directory-p file-exists-p file-locked-p file-name-absolute-p |
1168 |
file-newer-than-file-p file-readable-p file-symlink-p file-writable-p |
file-newer-than-file-p file-readable-p file-symlink-p file-writable-p |
1169 |
float floor format frame-visible-p |
float float-time floor format format-time-string frame-visible-p |
1170 |
|
fround ftruncate |
1171 |
get gethash get-buffer get-buffer-window getenv get-file-buffer |
get gethash get-buffer get-buffer-window getenv get-file-buffer |
1172 |
hash-table-count |
hash-table-count |
1173 |
int-to-string |
int-to-string intern-soft |
1174 |
keymap-parent |
keymap-parent |
1175 |
length local-variable-if-set-p local-variable-p log log10 logand |
length local-variable-if-set-p local-variable-p log log10 logand |
1176 |
logb logior lognot logxor lsh |
logb logior lognot logxor lsh |
1177 |
|
make-list make-string make-symbol |
1178 |
marker-buffer max member memq min mod |
marker-buffer max member memq min mod |
1179 |
next-window nth nthcdr number-to-string |
next-window nth nthcdr number-to-string |
1180 |
parse-colon-path prefix-numeric-value previous-window propertize |
parse-colon-path plist-get plist-member |
1181 |
radians-to-degrees rassq regexp-quote reverse round |
prefix-numeric-value previous-window prin1-to-string propertize |
1182 |
|
radians-to-degrees rassq rassoc read-from-string regexp-quote |
1183 |
|
region-beginning region-end reverse round |
1184 |
sin sqrt string string< string= string-equal string-lessp string-to-char |
sin sqrt string string< string= string-equal string-lessp string-to-char |
1185 |
string-to-int string-to-number substring symbol-function symbol-plist |
string-to-int string-to-number substring sxhash symbol-function |
1186 |
symbol-value |
symbol-name symbol-plist symbol-value |
1187 |
tan unibyte-char-to-multibyte upcase user-variable-p vconcat |
tan truncate |
1188 |
|
unibyte-char-to-multibyte upcase user-full-name |
1189 |
|
user-login-name user-original-login-name user-variable-p |
1190 |
|
vconcat |
1191 |
window-buffer window-dedicated-p window-edges window-height |
window-buffer window-dedicated-p window-edges window-height |
1192 |
window-hscroll window-minibuffer-p window-width |
window-hscroll window-minibuffer-p window-width |
1193 |
zerop)) |
zerop)) |
1194 |
(side-effect-and-error-free-fns |
(side-effect-and-error-free-fns |
1195 |
'(arrayp atom |
'(arrayp atom |
1196 |
bobp bolp buffer-end buffer-list buffer-size buffer-string bufferp |
bobp bolp bool-vector-p |
1197 |
|
buffer-end buffer-list buffer-size buffer-string bufferp |
1198 |
car-safe case-table-p cdr-safe char-or-string-p commandp cons consp |
car-safe case-table-p cdr-safe char-or-string-p commandp cons consp |
1199 |
current-buffer current-global-map current-indentation |
current-buffer current-global-map current-indentation |
1200 |
current-local-map current-minor-mode-maps |
current-local-map current-minor-mode-maps current-time |
1201 |
dot dot-marker eobp eolp eq equal eventp |
current-time-string current-time-zone |
1202 |
|
eobp eolp eq equal eventp |
1203 |
floatp following-char framep |
floatp following-char framep |
1204 |
get-largest-window get-lru-window |
get-largest-window get-lru-window |
1205 |
hash-table-p |
hash-table-p |
1213 |
one-window-p overlayp |
one-window-p overlayp |
1214 |
point point-marker point-min point-max preceding-char processp |
point point-marker point-min point-max preceding-char processp |
1215 |
recent-keys recursion-depth |
recent-keys recursion-depth |
1216 |
selected-frame selected-window sequencep stringp subrp symbolp |
safe-length selected-frame selected-window sequencep |
1217 |
standard-case-table standard-syntax-table syntax-table-p |
standard-case-table standard-syntax-table stringp subrp symbolp |
1218 |
|
syntax-table syntax-table-p |
1219 |
this-command-keys this-command-keys-vector this-single-command-keys |
this-command-keys this-command-keys-vector this-single-command-keys |
1220 |
this-single-command-raw-keys |
this-single-command-raw-keys |
|
user-full-name user-login-name user-original-login-name |
|
1221 |
user-real-login-name user-real-uid user-uid |
user-real-login-name user-real-uid user-uid |
1222 |
vector vectorp visible-frame-list |
vector vectorp visible-frame-list |
1223 |
window-configuration-p window-live-p windowp))) |
wholenump window-configuration-p window-live-p windowp))) |
1224 |
(while side-effect-free-fns |
(while side-effect-free-fns |
1225 |
(put (car side-effect-free-fns) 'side-effect-free t) |
(put (car side-effect-free-fns) 'side-effect-free t) |
1226 |
(setq side-effect-free-fns (cdr side-effect-free-fns))) |
(setq side-effect-free-fns (cdr side-effect-free-fns))) |