freenode/#clasp - IRC Chatlog
Search
1:34:17
Bike
shouldn't you have to worry about invoke for any use of multiple-value-foreign-call, then?
1:38:36
drmeister
This is what it was about. Cavalier use of 'call' when I need to be using 'invoke' when there is a landing-pad set up in the function.
1:39:13
Bike
i'm still not sure i get it. A caller needs to use 'invoke' when the caller is prepared to except abnormal exits from the called function, right?
1:39:33
drmeister
I just noticed that multiple-value-foreign-call was not completely fixed up. I'm not using it much and the things I'm using it for may not unwind the stack - or a nasty bug is waiting to bite me in the butt.
1:40:33
drmeister
Yes, precisely. The caller must use 'invoke' when the caller needs to evaluate cleanup code if the callee unwinds the stack.
1:41:20
Bike
i mean, not here. presumably call_with_variable_bound has some unwind-protect type thing.
1:41:21
drmeister
In cleavir it reduces to... if the translate-xxxx-instruction is passed a landing pad - then use it and use invoke.
1:42:55
drmeister
Yes, the call_with_variable_bound uses RAII - so it's going to do the right thing. But the stack unwinding can keep going - and it might want to stop in this function.
1:43:44
drmeister
There is nothing in the function to cleanup anymore - I'm going to do the stack backtrace cleanup in an outer function - that will simplify things.
1:48:58
drmeister
multiple-value-xxxx usually means the call uses the multiple values returned by something else.
2:33:23
drmeister
Up until a few hours ago a call-with-variable-bound involved a wrapper, the call-with-variable-bound and a funcall of the thunk with zero arguments. I removed the funcall of the thunk and it had no observable effect on compilation time.
2:34:49
drmeister
The cclasp compilation time now is 2474seconds and with the funcall it was 2454 seconds.
3:04:50
drmeister
But it supports this proposal of beach's that binding dynamic variables doesn't happen that often.
3:12:41
drmeister
Ugh - I have a crash in /Users/meister/Development/clasp/src/lisp/kernel/contrib/sicl/Code/Cleavir/Kildall/Specializations/Escape/transfer.lisp
3:20:57
Bike
https://github.com/Bike/SICL/blob/clasp-changes/Code/Cleavir/Kildall/Specializations/Escape/transfer.lisp#L104-L124 specifically
3:21:39
drmeister
https://github.com/Bike/SICL/blob/master/Code/Cleavir/Kildall/Specializations/Escape/transfer.lisp#L104
4:32:20
drmeister
I had a crash compiling mislib.lsp. I then ran it under the debugger and it's compiling fine - bleh.
5:44:45
Bike
beach: sent a pull request. i implemented the ast primop we were talking about for something else (more flexibility for call-with-variable-bound)
6:56:06
beach
By the way, real quick, I know it's late for you: I am making significant progress on the lambda-list parser for the CST. I am still changing my design frequently because I realize simpler ways of doing what I want.
6:57:11
beach
One thing I want to be possible to customize is what happens when a forbidden lambda-list keyword is encountered, and what happens when a symbol starting with & is encountered.
7:01:52
beach
... but I also need to do that tax declaration, which is going to be more complicated this year. :(
7:02:31
beach
Then, the CST stuff needs to be thoroughly tested, and after that, integrated into Cleavir.
7:03:08
beach
Since it is a separate library, it is appropriate to write good tests and good documentation. My new motto. :)
7:03:44
Bike
well, sounds like a plan. i have the kildall rewrite thing working but i'm not sure what the interface should be, and i've been kind of distracted with finding housing and stuff. but it shouldn't take too long to work something out.
7:04:53
beach
Unrelated: I am also very pleased with the progress on McCLIM. There is lots of activity and everybody is going a great job. It means I can concentrate on other stuff.
7:05:14
Bike
And this is kind of random, but sicl-format won't load without sicl-format-test because it has a package definition for sicl-format-test which uses lisp-unit.
7:06:13
beach
I am also moving away from unit-testing frameworks in general. I find them not worth the trouble.