freenode/#clasp - IRC Chatlog
Search
1:44:41
drmeister
I'm proposing to replace SingleDispatchGeneric functions with the same dtrees we use for generic functions. It will simplify calling C++ methods - and probably speed it up a bit.
1:45:28
drmeister
I think the simplest way to do it is to get rid of SingleDispatchGenericFunctions and use generic functions in their place.
1:45:57
drmeister
When we expose methods we build up a bogus call-history for the generic function that maps argument types to effective methods (wrapped C++ methods).
1:46:47
drmeister
We then write a function like clos__interpret_dtree_program but it uses the call history to do the dispatch.
1:47:19
drmeister
It will be slower when we are building aclasp - but once aclasp is up we can compile the call histories to dtree programs.
1:48:04
drmeister
The dtree bytecode for these C++ methods should be pretty simple - so we could do that.
1:49:08
drmeister
But we could write a printer for dtree programs and that would make it easier to understand them.
1:49:56
Bike
it's honestly pretty simple. it does the old binary search whatever stuff and then calls a function or whatever
1:50:02
drmeister
There are no EQL specializers and the only types we need to worry about are General_O derived types.
1:51:28
drmeister
We could - but why bother. We do need a specialized dtree compiler then, implemented in C++ so that we can generate the dtree programs at startup.
1:53:42
drmeister
Right - so we could just write an interpreter that searches that alist for a type match and then calls the appropriate effective method.
1:54:12
drmeister
Once the dtree compiler is available we compile all of the call histories and then install the dtree interpreter.
1:57:11
drmeister
As an intermediate step we can continue to use the SingleDispatchGenericMethod object I think.
2:18:39
drmeister
The car's of each entry are a vector of classes representing the classes of the arguments