SA
кажется слот тестить лучше
Size: a a a
SA
SA
CL-USER> (disassemble (lambda (a)
(declare (optimize (speed 3) (safety 0) (debug 0))
(bar a))
(typecase a
(w-bar 1)
(otherwise 2))))
; disassembly for (LAMBDA (A))
; Size: 39 bytes. Origin: #x52C490D6 ; (LAMBDA (A))
; D6: 8B4201 MOV EAX, [RDX+1]
; D9: 4881785D83F73F50 CMP QWORD PTR [RAX+93], #x503FF783 ; #<SB-KERNEL:LAYOUT for W-BAR {503FF783}>
; E1: 750B JNE L2
; E3: L0: BA02000000 MOV EDX, 2
; E8: L1: 488BE5 MOV RSP, RBP
; EB: F8 CLC
; EC: 5D POP RBP
; ED: C3 RET
; EE: L2: 483D83F73F50 CMP RAX, #x503FF783 ; #<SB-KERNEL:LAYOUT for W-BAR {503FF783}>
; F4: 74ED JEQ L0
; F6: BA04000000 MOV EDX, 4
; FB: EBEB JMP L1
NIL
CL-USER> (disassemble (lambda (a)
(declare (optimize (speed 3) (safety 0) (debug 0))
(foo a))
(case (foo-color a)
(:white 1)
(otherwise 2))))
; disassembly for (LAMBDA (A))
; Size: 29 bytes. Origin: #x52C49176 ; (LAMBDA (A))
; 76: 48817A0D6FD63F50 CMP QWORD PTR [RDX+13], #x503FD66F ; :WHITE
; 7E: BA04000000 MOV EDX, 4
; 83: 41BB02000000 MOV R11D, 2
; 89: 490F44D3 CMOVEQ RDX, R11
; 8D: 488BE5 MOV RSP, RBP
; 90: F8 CLC
; 91: 5D POP RBP
; 92: C3 RET
SA
SA
SA
DP
DP
DP
DP
DP
AK
DP
SA
AE
DP
DP
DP
AE
AE
DP