История изменений
Исправление den73, (текущая версия) :
Проверочный код такой:
(in-package :cl-user)
(declaim (optimize (safety 0) (speed 3) (debug 0) (space 0) (compilation-speed 0)))
(proclaim '(optimize (safety 0) (speed 3) (debug 0) (space 0) (compilation-speed 0)))
(defstruct person id name)
(defun funcall-person-id (person)
(funcall #'person-id (the person person)))
(defun funcall-person-id-2 (person)
(person-id (the person person)))
; disassembly for FUNCALL-PERSON-ID
; Size: 17 bytes. Origin: #x10081F9531
; 31: 84042500000F20 TEST AL, [#x200F0000] ; safepoint
; no-arg-parsing entry point
; 38: 488B510D MOV RDX, [RCX+13]
; 3C: 488BE5 MOV RSP, RBP
; 3F: F8 CLC
; 40: 5D POP RBP
; 41: C3 RET
Исходная версия den73, :
Проверочный код такой:
(in-package :cl-user)
(declaim (optimize (safety 0) (speed 3) (debug 0) (space 0) (compilation-speed 0)))
(proclaim '(optimize (safety 0) (speed 3) (debug 0) (space 0) (compilation-speed 0)))
(defstruct person id name)
(defun funcall-person-id (person)
(funcall #'person-id (the person person)))
(defun funcall-person-id-2 (person)
(person-id (the person person)))