freenode/#clasp - IRC Chatlog
Search
13:39:38
beach
Strange question. You would pass them the same way you pass arguments to an ordinary function, no?
13:41:40
drmeister
Yes, but a call to a generic function leads to a call to an effective method where two arguments are inserted in front of the others - that leads to arguments being copied. This is the general case. There are 4 arguments passed in registers maybe I should focus more on that.
13:49:50
beach
Let me make sure. I'll first check what SBCL does and then check the Common Lisp HyperSpec.
13:51:29
drmeister
If it's (m n o) then I could put them in a list (va_list) M and the call becomes (next-method M (cdr B))
13:54:17
beach
"When call-next-method is called with no arguments, it passes the current method's original arguments to the next method."
13:55:32
drmeister
Why say "current method's original arguments". "original" sounds like something other than the "current methods arguments"
13:57:31
beach
Next, with instances of standard-generic-function, I think you can do as you please as we have discussed in the past. For example, if the generic function takes only required parameters (say x y z), you can pass x y z B to the methods, rather than (x y z) B. That way you don't have to cons up a list.
14:00:28
beach
... and you also don't have to shuffle the arguments from the discriminating function to the methods.
14:01:20
drmeister
There is no consing of lists anymore for these arguments - I use the C va_list - at worst it's copying 4 integers on the stack.
14:10:33
Shinmera
drmeister: It says "original" because you might modify the contents of your arguments variable bindings.
14:15:26
beach
If you have keyword parameters, your execution time is going to be dominated by parsing the keyword arguments anyway.
14:36:45
drmeister
beach: Thank you for pointing out that I don't need to pass both sets of arguments - that simplifies things.
14:37:44
drmeister
I know more about modifying the CLOS code to change the calling convention. There are lots of changes scattered about that need to be made in a concerted manner.
18:37:28
drmeister
Hmmm, I added specialized vectors and they aren't being recognized as subtypes of 'vector.
18:39:51
drmeister
I'm relieved - it's breaking ironclad which is breaking cl-jupyter - but it's not some scary function calling thing.
18:43:16
drmeister
I have a complicated multistep procedure to add specialized vector/arrays and it may not yet completely mesh with what the ECL subtypep needs.