freenode/#clasp - IRC Chatlog
Search
14:16:30
drmeister
Do you have new insight? Implement eval with Hir->CL and maintain a compilation environment?
14:16:56
Bike
maintaining a compilation environment has to be done for any kind of cross compiling of common lisp, i think
14:21:07
Bike
that i have to look more at. i don't totally understand what SICL is doing with the linking.
14:25:59
Bike
really, i want to go through the files to organize them for dependencies anyway. we do all kinds of stuff in a weird order.
14:56:50
beach
Trying to create a first-class global environment in the same way that I have been doing before.
14:59:42
beach
(let ((sicl-extrinsic-environment::*cache-p* t)) (make-instance 'sicl-extrinsic-environment:environment))
15:06:01
Bike
if i call sset-union with the same arguments that are causing an error in the backtrace, it doesn't signal an error
15:21:06
Bike
i'll start running that when i make cleavir changes, to make sure everything works... sorry about this.
15:23:10
Bike
i replaced it with cleavir-primop:multiple-value-call which assumes that its first argument is a function. which the special operator multiple-value-call should not do
15:24:08
Bike
So SICL has to provide some kind of definition for multiple-value-call, something like (defmacro multiple-value-call (function &rest arguments) `(cleavir-primop:multiple-value-call (coerce-to-function ,function) ,@arguments))
15:44:57
beach
By the way, the code in that system (sicl-extrinsic-environment) is basically the same as what you would need for Clasp.
16:20:03
Bike
drmeister: can we profile /easy/ compilations? like, i put in a bunch of inline definitions for cdar, second, etc., but there's a few dozen and each takes a few seconds, so overall it takes minutes
16:49:23
Bike
the only file in clasp/src/profiler is dot_sbclrc, it doesn't have any of those scripts you showed me.
16:56:09
drmeister
There is a way with dtrace to start timing when one function enters and stop when another enters - we can explore that.
1:14:47
drmeister
Ok - I can get the size of COMPILE'd functions in bytes - but it's a bit weird. The easiest thing would be to maintain a global thread-safe hash table with :test #'equal within which I associate function symbol (linux symbols) names with function sizes.
1:15:15
drmeister
Then disassemble can reference this to get the length of a function that you are trying to disassemble.
1:16:46
drmeister
Basically - if you COMPILE a function and then DISASSEMBLE it - you will get the disassembly of the function. Anything not COMPILE'd will give you the first 16 instructions and then you can ask for more.
1:18:57
drmeister
I think maybe if you load the bitcode of compile-file'd functions you will get this info.