libera/#clasp - IRC Chatlog
Search
21:45:17
Bike
yitzi: one of the PR tests failed in a strange way. the other two look good, though (meaning they're fine except DISASSEMBLE-8 and DISASSEMBLE-9)
22:38:08
yitzi
Bike: I agree, I don't think that has anything to do with that PR. Could be just a crash.
22:44:20
yitzi
drmeister: When the analyze script is done, both src/analyze/clasp_gc.sif and src/analyze/clasp_gc_cando.sif should be updated.
22:46:44
drmeister
(class-of #'make-instance) -> #<The CLOS:FUNCALLABLE-STANDARD-CLASS STANDARD-GENERIC-FUNCTION>
22:59:21
drmeister
I'm exposing a function core__header_stamp that will read the header stamp. I expect that to be the stamp of FuncallableInstance_O but the rack stamp will be the stamp for #<The CLOS:FUNCALLABLE-STANDARD-CLASS STANDARD-GENERIC-FUNCTION>
23:59:49
drmeister
(sb-mop:class-precedence-list (class-of #'make-instance)) doesn't include funcallable-instance
0:51:34
drmeister
::notify karlosz I pushed the changes to the 'vm' branch of clasp to support a bytecode compiler and interpreter.
0:51:47
drmeister
::notify Bike I pushed the changes to the 'vm' branch of clasp to support a bytecode compiler and interpreter.
1:24:24
drmeister
I have the C++ function bytecode_call invoke (defun SYS:BYTECODE-CALL (pc-pointer closure args) ...)
1:24:48
drmeister
I've added methods to access the entry-point from the closure and all the bytecode_function stuff you asked for.
1:25:18
drmeister
Also, the pc-pointer is a Pointer_O object and you can read bytes and in-place-increment the pointer with a positive or negative offset.
1:26:44
drmeister
It won't be super fast because of overhead - but it should let you write one for debugging and testing.
1:49:32
Colleen
Bike: drmeister said 57 minutes, 45 seconds ago: I pushed the changes to the 'vm' branch of clasp to support a bytecode compiler and interpreter.
1:50:26
drmeister
Right. The stamp for FuncallableInstance_O is in the header of every generic function - but the class of a generic function is defined by the stamp in its rack.
1:51:26
drmeister
Just like the stamp of Instance_O is in the header of every instance of a clos class - but it's not in the class-precedence list of any clos class
1:52:10
drmeister
Yeah gc::IsA uses the header stamp to determine what C++ class an object belongs to.
1:52:12
Bike
L339-340 of src/core/predicates.cc is where compiled-function-p checks if something's a funcallable instance
1:55:06
Bike
also (typeq #'make-instance core:funcallable-instance), which uses the header stamp i think
2:00:52
Bike
(clos:funcallable-standard-instance-access #'make-instance 2) => #<METHOD-COMBINATION STANDARD>
2:06:13
drmeister
Digging deeper - I just need to get my cando to build here and I can ask it some questions.
2:31:56
drmeister
STAMPWTAG_core__FuncallableInstance_O = ADJUST_STAMP(997), // stamp 249 unshifted 0x3E5 shifted 0xF94
2:37:15
drmeister
Bike: aside - are we going to call bytecode compiled function xxx (compiled-function-p xxx) -> T
2:50:41
Bike
for now we might want to say no, in case there's stuff expecting compiled functions to have machine code, like disassemble does
2:50:55
Bike
(having disassemble work on the bytecode would be good. i already wrote a disassembler for the bytecode)
3:12:08
drmeister
We don't want FuncallableInstance_O for generic functions to report on whether they are interpreted or not do we?
3:16:36
Bike
conceptually i'd say disassemble should disassemble the discriminating function, or more generally the funcallable instance function
4:02:16
drmeister
::notify yitzi I'm getting "Symbol named "ON-REMOVE" not found in the NGL package." How do I fix that?
4:51:00
drmeister
::notify yitzi Could ./koga --clean do rm -rf build dependencies src/lisp/kernel/contrib
4:59:39
Colleen
karlosz: drmeister said 4 hours, 8 minutes ago: I pushed the changes to the 'vm' branch of clasp to support a bytecode compiler and interpreter.
5:00:54
karlosz
great! stuff doesn't need to be final, but this should make it easy to change stuff as we need
5:00:56
drmeister
If you check the bottom of https://github.com/clasp-developers/clasp/wiki/Virtual-machine-design
5:01:26
drmeister
You implement a function (defun core:bytecode-call (pc-pointer closure args) ... )