Currently the `method entry details' and `effective method function
details' blocks are independent, but they won't be soon.
:class class
:method method))
:class class
:method method))
- ;; Effective method function details.
- (emf-name (effective-method-function-name method))
- (ilayout-type (c-type (* (struct (ilayout-struct-tag class)))))
- (emf-arg-tail (sod-message-no-varargs-tail message))
- (emf-type (c-type (fun (lisp return-type)
- ("sod__obj" (lisp ilayout-type))
- . emf-arg-tail)))
-
;; Method entry details.
(chain-tails (remove-if-not (lambda (super)
(sod-subclass-p super message-class))
;; Method entry details.
(chain-tails (remove-if-not (lambda (super)
(sod-subclass-p super message-class))
((endp args) nil)
(when (eq (car args) :ellipsis)
(return prev))))
((endp args) nil)
(when (eq (car args) :ellipsis)
(return prev))))
- (entry-target (codegen-target codegen)))
+ (entry-target (codegen-target codegen))
+
+ ;; Effective method function details.
+ (emf-name (effective-method-function-name method))
+ (ilayout-type (c-type (* (struct (ilayout-struct-tag class)))))
+ (emf-arg-tail (sod-message-no-varargs-tail message))
+ (emf-type (c-type (fun (lisp return-type)
+ ("sod__obj" (lisp ilayout-type))
+ . emf-arg-tail))))
(flet ((setup-entry (tail)
(let ((head (sod-class-chain-head tail)))
(flet ((setup-entry (tail)
(let ((head (sod-class-chain-head tail)))