freenode/#clasp - IRC Chatlog
Search
19:54:21
Younder
It is not possible to make a FuncallableInstance_O a funcallable_standard_object because it need a separate dispatch table (Multiple instances)
20:05:31
scymtym
Shinmera: btw, did you get the link to the video showing what we do with jenkins? (i'm not going to bother you about whether you watched it, your thoughts, etc. just wanted to make sure you saw it since i said i would get back to you regarding the topic)
20:55:21
drmeister
The #'make-cxx-object function calls the creator for the class - so it makes an instance and initializes the C++ data.
21:10:08
drmeister
I just hit a snag. Any function that previously returned or accepts a Function_sp now needs to switch to T_sp
22:14:18
drmeister
I can call Function_sp objects without any trouble - I've been doing that for a long time.
22:16:25
drmeister
But I had a intermediate function that handled things - I need to do things just a bit differently now.
22:19:16
Bike
right. i was just worried about introducing a branch. but if there already is one, well
22:19:27
drmeister
The invoke_funcallable_instance is the new intermediate function. It will have the signature T_mv invoke_funcallable_instance(T_O* funcallable_instance, ...) and it will create a VaList_S structure that will be passed to the dispatch function.
22:21:11
drmeister
Either that or I put an entry (function pointer to dispatcher) slot in the Instance_O class at the same offset as the entry slot for Function_O but that is useless for general instances.
22:22:08
drmeister
What do you think? A branch for every funcall or increase every general instance by 8 bytes?
22:28:55
drmeister
Hmm, maybe it's only an issue because I have FuncallableInstance_O inheriting from Instance_O
22:30:46
drmeister
An Instance_O stores a class, a rack and a signature (pointer to list of class slots).
22:31:23
drmeister
I could make FuncallableInstance_O have the same offset for the class and the rack and put the signature elsewhere.
22:49:55
drmeister
The ASSERT_FUNCALLABLE will test if the T_sp in tfunc is funcallable when building in debug mode - and will be gone in release mode.
22:50:59
drmeister
The FUNCALLABLE_ENTRY_POINT(tfunc,entry) will read the function pointer from 'tfunc' and put it in 'entry'. I'll get rid of the ASSERT_FUNCALLABLE and put it into FUNCALLABLE_ENTRY_POINT
22:55:56
Shinmera
There's this venn diagram with "fast" "correct" "cheap" and all three are impossible.
22:57:23
Shinmera
Right, but so far drmeister has been very strong on "cheap" because he's been one-manning it for far too long with the fear of not getting any grants ever.
23:05:39
drmeister
I'll put a sanity check in at startup that ensures that offsetof(Function_O,entry) == offsetof(FuncallableInstance_O,entry)
23:09:23
drmeister
If I started over again today, from scratch - I don't think I could get 10% of the runtime right from the start.
0:41:54
drmeister
I've got a big family dinner going on tonight - I won't get much done until tomorrow.