SA
Size: a a a
SA
SA
SA
SA
SA
SA
SA
a
CL-USER> (defun f0 (x) (1+ x))
F0
CL-USER> (declaim (inline f1))
(F1)
CL-USER> (defun f1 (x) (1+ x))
F1
CL-USER> (disassemble (defun g0 (x) (1+ (f0 x))))
; disassembly for G0
; Size: 59 bytes. Origin: #x531AC381 ; G0
; 81: 498B4510 MOV RAX, [R13+16] ; thread.binding-stack-pointer
; 85: 488945F8 MOV [RBP-8], RAX
; 89: 4883EC10 SUB RSP, 16
; 8D: 488B55F0 MOV RDX, [RBP-16]
; 91: B902000000 MOV ECX, 2
; 96: 48892C24 MOV [RSP], RBP
; 9A: 488BEC MOV RBP, RSP
; 9D: B862E84750 MOV EAX, #x5047E862 ; #<FDEFN F0>
; A2: FFD0 CALL RAX
; A4: 480F42E3 CMOVB RSP, RBX
; A8: BF02000000 MOV EDI, 2
; AD: FF142500010052 CALL QWORD PTR [#x52000100] ; GENERIC-+
; B4: 488BE5 MOV RSP, RBP
; B7: F8 CLC
; B8: 5D POP RBP
; B9: C3 RET
; BA: CC10 INT3 16 ; Invalid argument count trap
NIL
CL-USER> (disassemble (defun g1 (x) (1+ (f1 x))))
; disassembly for G1
; Size: 44 bytes. Origin: #x53104991 ; G1
; 91: 498B4510 MOV RAX, [R13+16] ; thread.binding-stack-pointer
; 95: 488945F8 MOV [RBP-8], RAX
; 99: 488B55F0 MOV RDX, [RBP-16]
; 9D: BF02000000 MOV EDI, 2
; A2: FF142500010052 CALL QWORD PTR [#x52000100] ; GENERIC-+
; A9: BF02000000 MOV EDI, 2
; AE: FF142500010052 CALL QWORD PTR [#x52000100] ; GENERIC-+
; B5: 488BE5 MOV RSP, RBP
; B8: F8 CLC
; B9: 5D POP RBP
; BA: C3 RET
; BB: CC10 INT3 16 ; Invalid argument count trap
NIL
CL-USER>
a
G0
подсматривает определение F0
динамически. G1
не подсматривает определение F1
динамически.CL-USER> (defun f0 (x) (+ 2 x))
WARNING: redefining COMMON-LISP-USER::F0 in DEFUN
F0
CL-USER> (g0 0)
3
CL-USER> (defun f1 (x) (+ 2 x))
WARNING: redefining COMMON-LISP-USER::F1 in DEFUN
F1
CL-USER> (g1 0)
2
SA
SA
SA
SA
a
a
a
V(
a
a
SA