Changeset 9386


Ignore:
Timestamp:
May 7, 2008, 10:58:26 AM (11 years ago)
Author:
gb
Message:

%%0-ARG-DCODE use *GF-PROTOT* trampoline, so register it.

REMVOE-ENCAPSULATION: if dcode isn't registered, default to
#'FUNCALLABLE-TRAMPOLINE.

There's actually one other case, which involves a funcallable-instance
whose funcallable-instance-function is unset; the trampoline signals
an error to that effect. I'm not sure if we can trace such a function;
if so, we might want to handle it in REMOVE-ENCAPSULATION.

I think that this may close ticket:287.

Location:
trunk/source
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-1/l1-dcode.lisp

    r9134 r9386  
    803803      (apply method args))))
    804804
     805(register-dcode-proto #'%%0-arg-dcode *gf-proto*)
     806
     807
    805808(defun dcode-too-few-args (arg-count cm-or-gf)
    806809  (error (make-condition 'too-few-arguments
  • trunk/source/lib/encapsulate.lisp

    r8795 r9386  
    243243                ) ; <<
    244244           (setf (%gf-dcode def) orig-decode)
    245            (replace-function-code def (or proto *gf-proto*)))
     245           (replace-function-code def (or proto #'funcallable-trampoline)))
    246246         (setf (car (%combined-method-methods (%gf-dcode def))) newdef))
    247247       (typecase spec
Note: See TracChangeset for help on using the changeset viewer.