Advertisement
Guest User

Untitled

a guest
Jul 15th, 2018
172
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.72 KB | None | 0 0
  1.  
  2.  
  3. (defun foo (a &key b)
  4. (declare (type fixnum a) (type list b))
  5. (funcall 'undefined (1+ a) (cons 'a b)))
  6.  
  7.  
  8. (declaim (optimize (debug 0) (speed 3)))
  9.  
  10. (defun c1 (f)
  11. (declare (type (function (fixnum &key (:b list))) f))
  12. (funcall f 5 :b '(foo)))
  13.  
  14. ; disassembly for C1
  15. ; Size: 33 bytes. Origin: #x10031B34FC
  16. ; 4FC: BA0A000000 MOV EDX, 10 ; no-arg-parsing entry point
  17. ; 501: BF4F953E20 MOV EDI, #x203E954F ; :B
  18. ; 506: 488B3593FFFFFF MOV RSI, [RIP-109] ; '(FOO)
  19. ; 50D: 488BC3 MOV RAX, RBX
  20. ; 510: B906000000 MOV ECX, 6
  21. ; 515: FF7508 PUSH QWORD PTR [RBP+8]
  22. ; 518: FF60FD JMP QWORD PTR [RAX-3]
  23. ; 51B: CC0F BREAK 15 ; Invalid argument count trap
  24.  
  25.  
  26. ; disassembly for C2
  27. ; Size: 121 bytes. Origin: #x10031B2AD0
  28. ; AD0: 498B4D60 MOV RCX, [R13+96] ; no-arg-parsing entry point
  29. ; thread.binding-stack-pointer
  30. ; AD4: 48894DF8 MOV [RBP-8], RCX
  31. ; AD8: 4883EC10 SUB RSP, 16
  32. ; ADC: BA0A000000 MOV EDX, 10
  33. ; AE1: BF4F953E20 MOV EDI, #x203E954F ; :B
  34. ; AE6: 488B357BFFFFFF MOV RSI, [RIP-133] ; '(FOO)
  35. ; AED: 498BC0 MOV RAX, R8
  36. ; AF0: B906000000 MOV ECX, 6
  37. ; AF5: 48892C24 MOV [RSP], RBP
  38. ; AF9: 488BEC MOV RBP, RSP
  39. ; AFC: FF50FD CALL QWORD PTR [RAX-3]
  40. ; AFF: 720B JB L0
  41. ; B01: 488BF4 MOV RSI, RSP
  42. ; B04: 52 PUSH RDX
  43. ; B05: B902000000 MOV ECX, 2
  44. ; B0A: EB20 JMP L2
  45. ; B0C: L0: 4883F906 CMP RCX, 6
  46. ; B10: 7F0B JNLE L1
  47. ; B12: 48C1E102 SHL RCX, 2
  48. ; B16: 4829CC SUB RSP, RCX
  49. ; B19: 48C1E902 SHR RCX, 2
  50. ; B1D: L1: 488953F8 MOV [RBX-8], RDX
  51. ; B21: 48897BF0 MOV [RBX-16], RDI
  52. ; B25: 488973E8 MOV [RBX-24], RSI
  53. ; B29: 488BF3 MOV RSI, RBX
  54. ; B2C: L2: 4C8B45F0 MOV R8, [RBP-16]
  55. ; B30: 4883F902 CMP RCX, 2
  56. ; B34: 750A JNE L3
  57. ; B36: 488B56F8 MOV RDX, [RSI-8]
  58. ; B3A: 488BE5 MOV RSP, RBP
  59. ; B3D: F8 CLC
  60. ; B3E: 5D POP RBP
  61. ; B3F: C3 RET
  62. ; B40: L3: FF24256000B021 JMP QWORD PTR [#x21B00060] ; RETURN-MULTIPLE
  63. ; B47: CC0F BREAK 15 ; Invalid argument count trap
  64.  
  65.  
  66.  
  67.  
  68. (defun c2 (f)
  69. (declare (type (function) f))
  70. (funcall f 5 :b '(foo)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement