~mdw
/
sod
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
src/method-proto.lisp (invoke-delegation-chain): Pass keyword args correctly.
[sod]
/
src
/
method-proto.lisp
diff --git
a/src/method-proto.lisp
b/src/method-proto.lisp
index
d019997
..
637c29e
100644
(file)
--- a/
src/method-proto.lisp
+++ b/
src/method-proto.lisp
@@
-500,11
+500,9
@@
nil."
(let* ((message (codegen-message codegen))
nil."
(let* ((message (codegen-message codegen))
- (argument-tail (cond ((varargs-message-p message)
- (cons *sod-tmp-ap* basic-tail))
- ((keyword-message-p message)
- (cons (keyword-struct-pointer) basic-tail))
- (t basic-tail))))
+ (argument-tail (if (varargs-message-p message)
+ (cons *sod-tmp-ap* basic-tail)
+ basic-tail)))
(labels ((next-trampoline (method chain)
(if (or kernel chain)
(make-trampoline codegen (sod-method-class method)
(labels ((next-trampoline (method chain)
(if (or kernel chain)
(make-trampoline codegen (sod-method-class method)
@@
-515,9
+513,13
@@
(if (null chain)
(funcall kernel target)
(let ((trampoline (next-trampoline (car chain)
(if (null chain)
(funcall kernel target)
(let ((trampoline (next-trampoline (car chain)
- (cdr chain))))
+ (cdr chain)))
+ (tail (if (keyword-message-p message)
+ (cons (keyword-struct-pointer)
+ argument-tail)
+ argument-tail)))
(invoke-method codegen target
(invoke-method codegen target
- (cons trampoline
argument-
tail)
+ (cons trampoline tail)
(car chain))))))
(invoke chain target))))
(car chain))))))
(invoke chain target))))