Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (defun foo (a &key b)
- (declare (type fixnum a) (type list b))
- (funcall 'undefined (1+ a) (cons 'a b)))
- (declaim (optimize (debug 0) (speed 3)))
- (defun c1 (f)
- (declare (type (function (fixnum &key (:b list))) f))
- (funcall f 5 :b '(foo)))
- ; disassembly for C1
- ; Size: 33 bytes. Origin: #x10031B34FC
- ; 4FC: BA0A000000 MOV EDX, 10 ; no-arg-parsing entry point
- ; 501: BF4F953E20 MOV EDI, #x203E954F ; :B
- ; 506: 488B3593FFFFFF MOV RSI, [RIP-109] ; '(FOO)
- ; 50D: 488BC3 MOV RAX, RBX
- ; 510: B906000000 MOV ECX, 6
- ; 515: FF7508 PUSH QWORD PTR [RBP+8]
- ; 518: FF60FD JMP QWORD PTR [RAX-3]
- ; 51B: CC0F BREAK 15 ; Invalid argument count trap
- ; disassembly for C2
- ; Size: 121 bytes. Origin: #x10031B2AD0
- ; AD0: 498B4D60 MOV RCX, [R13+96] ; no-arg-parsing entry point
- ; thread.binding-stack-pointer
- ; AD4: 48894DF8 MOV [RBP-8], RCX
- ; AD8: 4883EC10 SUB RSP, 16
- ; ADC: BA0A000000 MOV EDX, 10
- ; AE1: BF4F953E20 MOV EDI, #x203E954F ; :B
- ; AE6: 488B357BFFFFFF MOV RSI, [RIP-133] ; '(FOO)
- ; AED: 498BC0 MOV RAX, R8
- ; AF0: B906000000 MOV ECX, 6
- ; AF5: 48892C24 MOV [RSP], RBP
- ; AF9: 488BEC MOV RBP, RSP
- ; AFC: FF50FD CALL QWORD PTR [RAX-3]
- ; AFF: 720B JB L0
- ; B01: 488BF4 MOV RSI, RSP
- ; B04: 52 PUSH RDX
- ; B05: B902000000 MOV ECX, 2
- ; B0A: EB20 JMP L2
- ; B0C: L0: 4883F906 CMP RCX, 6
- ; B10: 7F0B JNLE L1
- ; B12: 48C1E102 SHL RCX, 2
- ; B16: 4829CC SUB RSP, RCX
- ; B19: 48C1E902 SHR RCX, 2
- ; B1D: L1: 488953F8 MOV [RBX-8], RDX
- ; B21: 48897BF0 MOV [RBX-16], RDI
- ; B25: 488973E8 MOV [RBX-24], RSI
- ; B29: 488BF3 MOV RSI, RBX
- ; B2C: L2: 4C8B45F0 MOV R8, [RBP-16]
- ; B30: 4883F902 CMP RCX, 2
- ; B34: 750A JNE L3
- ; B36: 488B56F8 MOV RDX, [RSI-8]
- ; B3A: 488BE5 MOV RSP, RBP
- ; B3D: F8 CLC
- ; B3E: 5D POP RBP
- ; B3F: C3 RET
- ; B40: L3: FF24256000B021 JMP QWORD PTR [#x21B00060] ; RETURN-MULTIPLE
- ; B47: CC0F BREAK 15 ; Invalid argument count trap
- (defun c2 (f)
- (declare (type (function) f))
- (funcall f 5 :b '(foo)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement