(defun make-adder (x &key huge-p enormous-p) (with-compile-time-branching (huge-p enormous-p) (lambda (y) (+ x y (compile-time-if huge-p 1000 0) (compile-time-if enormous-p 2000 0))))) CL-USER> (disassemble (make-adder 10)) ; disassembly for (LAMBDA (Y) :IN MAKE-ADDER) ; Size: 28 bytes. Origin: #x5370DA87 ; (LAMBDA (Y) :IN MAKE-ADDER) ; 87: 488BD1 MOV RDX, RCX ; 8A: E8A1302FFF CALL #x52A00B30 ; GENERIC-+ ; 8F: 31FF XOR EDI, EDI ; 91: E89A302FFF CALL #x52A00B30 ; GENERIC-+ ; 96: 31FF XOR EDI, EDI ; 98: E893302FFF CALL #x52A00B30 ; GENERIC-+ ; 9D: 488BE5 MOV RSP, RBP ; A0: F8 CLC ; A1: 5D POP RBP ; A2: C3 RET NIL CL-USER> (disassemble (make-adder 10 :huge-p t)) ; disassembly for (LAMBDA (Y) :IN MAKE-ADDER) ; Size: 28 bytes. Origin: #x5370DA87 ; (LAMBDA (Y) :IN MAKE-ADDER) ; 87: 488BD1 MOV RDX, RCX ; 8A: E8A1302FFF CALL #x52A00B30 ; GENERIC-+ ; 8F: 31FF XOR EDI, EDI ; 91: E89A302FFF CALL #x52A00B30 ; GENERIC-+ ; 96: 31FF XOR EDI, EDI ; 98: E893302FFF CALL #x52A00B30 ; GENERIC-+ ; 9D: 488BE5 MOV RSP, RBP ; A0: F8 CLC ; A1: 5D POP RBP ; A2: C3 RET NIL