freenode/#clasp - IRC Chatlog
Search
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.
17:20:27
drmeister
Ah - also it doesn't work here because when I do things from C++ I bypass that stuff.
17:20:52
Shinmera
Well that may or may not be desired. Since it's an implementation extension you can do whatever you think is right.
18:33:58
Bike
because check-type allows the thing to be modified, you have to give it a place, not just a value
18:35:26
drmeister
It's happening here: https://github.com/clasp-developers/clasp/blob/dev/src/lisp/kernel/cleavir/hir.lisp#L284
18:43:50
Bike
cos what check-type does is the typep, but then it signals an error that can be restarted by modifying the place
19:49:17
drmeister
I think every argument processing error will now print the function name in the error message and lots of warnings in the C++ compilation and cclasp compilation have been eliminated by fixing their underlying cause.
20:24:27
drmeister
I spent the whole day improving the debugging experience and now all I want to do is code with it but I have to go to a dinner party! ARGH - life is just not fair sometimes.
20:29:23
drmeister
Anyway, I'm feeling pretty good about things. I really like these function-description objects embedded in the llvm Module's - they solve problems I've had from day 1.
20:54:22
drmeister
Do you know what this means? It's the longest meaningless error message I have seen in a while.
20:55:23
drmeister
I don't know what other ASDF it's getting and where it's getting it from or where it is stored.
21:03:29
attila_lendvai
drmeister: in short: you have a very old ASDF somewhere that the running ASDF can see in its configuration
21:04:26
drmeister
Hmm, this is just happening in my docker build - maybe I'm cloning another asdf in the Dockerfile.
21:06:25
attila_lendvai
it's a very old ASDF. it's most probably coming from the cl-asdf debian/ubuntu package... is it installed? maybe as a dependency of something? (note: the cl-foo debian packages were an endless source of headaches about 5-10 years ago when I gave up on them completely)
21:08:06
attila_lendvai
drmeister: it can happen on some old ubuntu or debian, but it's not happening recently... on debian stable I have the sbcl package but none of the cl-foo
21:08:40
attila_lendvai
quicklisp also has a ridiculously old ASDF, but that shouldn't be visible to ASDF
21:08:55
drmeister
I'm pulling down the docker image now - I'll crawl into it once it's down and see if I can find anything.
21:10:42
attila_lendvai
drmeister: keep in mind that it's just a warning... maybe you can just ignore it? :)
21:11:14
drmeister
I have been - but for the past couple days I've been fixing warnings because they irk me.
21:15:56
attila_lendvai
if that helps I can bug Fare to make it shorter... :) jokes aside, running free of warnings is a good idea. (which doesn't mean 100% if the cost is too high for the last 1%. and disabling non-useful warnings is also allowed... :)
22:01:11
karlosz
is it legal to compile in the fdefinitions of any symbol in the COMMON-LISP package?
22:05:12
karlosz
like, normally with (f x y) you'd emit code that first looks up the symbol function
22:09:36
Bike
in like, sbcl, if you compile a function, sbcl will derive the type and use that in other functions in the file, i think.