freenode/#clasp - IRC Chatlog
Search
13:52:29
Colleen
Bike: drmeister said 8 hours, 39 minutes ago: I found the problem. You need to %load the first input (header value) - otherwise you are working with an aligned pointer (address of the header) and the ptrtoint will cheerfully convert that to an i64 and fail silently.
13:52:29
Colleen
Bike: drmeister said 7 hours, 37 minutes ago: I'm trying to fix the generic-function test at the same time - that will take another hour probably.
13:52:29
Colleen
Bike: drmeister said 7 hours, 37 minutes ago: I'll finish it in the morning. Too tired...
14:32:49
drmeister
Bike: I need to detect at compile time if a typeq is for function so that I can generate the additional code to check if the object is an Instance_O and then if obj._isgf != 0
14:37:16
drmeister
I don't quite understand the "nothing to detect". In compile-header-check I need to know if the check should be against 'function', 'compiled-function' or 'generic-function' (are there any more)?
14:38:50
drmeister
So we can have a compile-header-check-function? Maybe with an argument to handle the subtypes?
14:40:58
drmeister
How about (compile-header-check-function function-type object-raw then-br else-br)? where function-type is 'function, 'compiled-function or 'generic-function ?
14:41:40
Bike
also for generic-function i'd just expect it to work like checking any instance's class, is that not viable?
14:42:08
drmeister
'function checks the entire range of header-values and then checks if the header-value matches that of Instance_O and if so checks the obj._isgf!=0
14:42:46
drmeister
'compiled-function checks if its one of the compiled function header-values (there may be only one, maybe two)
14:43:08
drmeister
'generic-function checks if the header-value is that of Instance_O and that obj._isgf != 0
14:43:31
Bike
by the way, i mentioned this before, compiled-function not including generic functions is wrong
14:44:07
drmeister
'compiled-function checks if its one of the compiled function header-values (there may be only one, maybe two) or if the header-value is that of Instance_O and that obj._isgf != 0
14:45:19
Bike
the main thing i want to check is function. leaving off subtypes for later is probably fine.
14:51:49
drmeister
That would put the header value for FuncallableInstance_O right after that of Instance_O
14:52:53
drmeister
You wouldn't be able to CHANGE-CLASS between a regular instance and a funcallable-instance - is that an issue?
14:53:54
drmeister
CLOS initializes a new instance and then copies the rack into whatever you give it.
14:57:09
Bike
if you want to be able to access instances and funcallable instances uniformly the rack would still have to be at the same offset, so maybe you can't save bytes.
14:58:23
drmeister
Neither of them would inherit from Function_O anymore. So there still needs to be separate checks for (typeq x function), (typeq x generic-function)
15:03:15
beach
This one can make things simpler sometimes: http://metamodular.com/CLOS-MOP/graph.png
15:05:31
drmeister
I'll define a FuncallableInstance_O class, which inherits from Instance_O and make Instance_O inherit from General_O.
18:17:49
drmeister
aclasp build - bclasp is building now. I anticipate problems in CLOS because generic functions need to be instances of FuncallableInstance_O
18:20:02
Bike
so like, how does funcall work? does it have to check whether a function is a generic function or not?
18:48:14
Younder
Well there are two functions apply and funcall as you (bloody well) know and they both take a function as a argument.
18:54:17
Younder
As far as I can tell a function is a function. generic is a term that refers to methods.
18:55:38
Colleen
Clhs: glossary-section g http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_g.htm#generic_function
18:57:39
Bike
younder, i have been employed in writing a lisp compiler for months now. i do not need to read PCL
19:18:21
Younder
As far as I am concerned there exists only 'generic' methods. They have extra baggage that function's don't have.
19:22:43
Bike
Look. I said "generic functions". In context, I am very obviously referring to the class generic-function, in the context of low level implementation concerns. You jumped in with some weird argument about the word "generic". It is not relevant.
19:24:53
Younder
Again there is no class generic function. There are only methods. Unless you include the ones generated by the definition of the class. I find your comments really confusing.
19:28:29
Younder
I said there is ONLY a CLASS-GENERIC function. Not a generic function outside of classes. Again, we are talking beside each others
19:30:08
Bike
i'm not working right now, or i would have ignored this earlier. philosophically speaking, i don't like shutting people out entirely, even on the internet where i'm sometimes not wholly convinced i'm not arguing with a sentinelese chatbot
19:32:24
Younder
Interesting you consider me a total moron ;) I'll tel it pass.. It is a beautiful summer day :)
19:38:38
Bike
if generic functions and non-generic functions are now different primitively, does funcall have to do something different for each, yeah
19:39:21
drmeister
I haven't figured out what yet - I was going to cross that bridge when I got to it.
19:40:55
drmeister
It's already doing different stuff. Generic functions were different enough from regular functions.
19:41:16
Younder
generic functions read their address from a table but it is several level deeper than from a function which is a simple array read.
19:41:53
drmeister
A dirty secret -> generic functions weren't using the Function_O entryPoint slot - they had their own. What I'm doing now will clean things up.
19:43:12
drmeister
Given how easy it was to change things - I would say no - it wasn't that important. I was a bit surprised how easy it was.
19:44:03
drmeister
Although - it's now that I need to fix things up. Maybe I haven't really hit the problems yet.
19:45:32
drmeister
For example - currently generic functions are instances of Instance_O and set-funcallable-instance-function is complaining because it is already checking that its argument is a FuncallableInstance_O (which isn't being created yet).
19:46:07
drmeister
The generic-function class is being created here: https://github.com/drmeister/clasp/blob/dev-func/src/lisp/kernel/clos/hierarchy.lsp#L454
19:50:31
drmeister
Would it be best to make every class that has funcallable-standard-class as its metaclass allocate a FuncallableInstance_O?
19:51:10
Bike
instances of funcallable-standard-class'es should be funcallable-standard-objects, yeah
19:51:29
drmeister
Or define the Creator for generic-function allocate a FuncallableInstance_O and any class that inherits from generic-function inherits that Creator
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.