freenode/#clasp - IRC Chatlog
Search
3:54:49
karlosz
https://paste.gnome.org/po5rpykk1 and https://paste.gnome.org/pbhb5r6k4 can both be proved to be what they return in cleavir but sbcl still has to do the computation
14:46:11
drmeister
Functions now have access to their function names. The function name 'foo' is mangled as FOO^COMMON-LISP-USER^FN^^
14:48:20
drmeister
Ah - when we profile code and generate flame graphs we have very few characters of the name that we can display. So I put the function name first and the package following.
14:49:07
Shinmera
I see. Just to be clear, that's the C name that could be used to call the function?
14:52:46
drmeister
I also did it for errors where it expects a keyword but didn't get one - but not bad keyword arguments yet. Adding that now...
14:55:36
drmeister
This is currently the only function name I have accessible. I could add a symbol.
15:03:40
drmeister
Bike: the layout-procedure function establishes a dynamic environment including binding cmp:*current-function* and cmp:*current-function* will be bound to the current function while instructions for that function are generated with translate-xxx-instruction - correct?
15:04:33
Bike
I don't know. I just copied things I didn't understand, so if that's what you wrote it is ideally the case in my rewrite as well.
15:05:00
drmeister
I'm asking because now I'm binding cmp:*current-function-description* in layout-procedure - so instructions that need it can pass it to intrinsics.
15:05:20
Bike
https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cleavir/translate.lisp#L294-L301 This looks right to me
15:06:48
drmeister
Right - not yet. The code that uses it is currently only the stuff in cmp/arguments.lisp
15:08:21
drmeister
What about symbol-value and fdefinition? If they signal an error - would it be a good idea to include the name of the function that was invoking those operations?
15:09:47
drmeister
Well, it's an option now - to have the function description pointer available to print more comprehensive error messages.
15:35:44
drmeister
I consolidated things so there's only one function to change once I figure out how to get a more human readable function name in there.
15:39:23
drmeister
And there is cmp:*current-function-description* - it stores the pointer to the current function-description that corresponds to the function bound to cmp:*current-function*.
15:42:19
drmeister
There is a structure in cmpintrinsics.lsp %function-description% https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cmp/cmpintrinsics.lsp#L509
15:42:54
drmeister
And a C struct FunctionDescription... https://github.com/clasp-developers/clasp/blob/dev/include/clasp/core/functor.h#L55
15:43:25
drmeister
So I added a sanity check that will cause the compiler to fail when compiling cmpintrinsics.lsp
15:44:52
drmeister
Right now it looks like I only have one slot for a name. I'm going to add another for the symbol.