1 
 2 ;;; BEGIN INCLUDE FILE compiler-macros.incl.lisp
 3 
 4 ;;; This file contains useful macros used by the lisp_compiler.
 5 
 6 ;    (defun compiler-displace macro (l)
 7 ;        ((lambda (a1 a2) (rplaca a1 (car a2)) (rplacd a1 (cdr a2)) (list 'quote a1))
 8 ;            (eval (cadr l))
 9 ;            (eval (caddr l))))
10     (defun barf macro (x)
11           (displace x (list 'printmes (cadr x) (caddr x) (list 'quote (cadddr x))) ))
12 
13     (defun warn macro (x) (displace x (list 'printmes (cadr x) (caddr x) ''warn)))
14     (defun specialp macro (x) (displace x  (list 'get (cadr x) '(quote special))))
15 
16     (defun memq-max macro (x) (displace x (list 'quote 11.)))         ;   optimize (memq x '(...)) into
17                                                             ;   an or of 10. or fewer clauses.
18 
19     (defun assq-max macro (x) (displace x (list 'quote  4)))          ;max 3-dotted-pair inline assq
20     (defun push macro (x)
21         (displace x (list 'setq (caddr x) (list 'cons (cadr x) (caddr x)))))
22     (defun pop macro (x) (displace x (list 'setq (cadr x) (list 'cdr (cadr x)))))
23     (defun pnamep macro (x) (displace x (subst (cadr x) 'x '(eq (typep x) 'symbol))))
24 
25 
26 ;;; END INCLUDE FILE compiler-macros.incl.lisp
27