Variable: byte-after-unbind-ops

byte-after-unbind-ops is a variable defined in byte-opt.el.gz.

Value

(byte-constant byte-dup byte-stack-ref byte-stack-set byte-discard
	       byte-discardN byte-discardN-preserve-tos byte-symbolp
	       byte-consp byte-stringp byte-listp byte-numberp
	       byte-integerp byte-not byte-cons byte-list1 byte-list2
	       byte-list3 byte-list4 byte-listN byte-interactive-p)

Documentation

Byte-codes that can be moved past an unbind.

Source Code

;; Defined in /usr/src/emacs/lisp/emacs-lisp/byte-opt.el.gz
(defconst byte-after-unbind-ops
   '(byte-constant byte-dup byte-stack-ref byte-stack-set byte-discard
     byte-discardN byte-discardN-preserve-tos
     byte-symbolp byte-consp byte-stringp byte-listp byte-numberp byte-integerp
     byte-not
     byte-cons byte-list1 byte-list2 byte-list3 byte-list4 byte-listN
     byte-interactive-p)
   ;; How about other side-effect-free-ops?  Is it safe to move an
   ;; error invocation (such as from nth) out of an unwind-protect?
   ;; No, it is not, because the unwind-protect forms can alter
   ;; the inside of the object to which nth would apply.
   ;; For the same reason, byte-equal was deleted from this list.
   ;;
   ;; In particular, `byte-eq' isn't here despite `eq' being nominally
   ;; pure because it is currently affected by `symbols-with-pos-enabled'
   ;; and so cannot be sunk past an unwind op that might end a binding of
   ;; that variable.  Yes, this is unsatisfactory.
   "Byte-codes that can be moved past an unbind.")