libera/#ecl - IRC Chatlog
Search
8:28:27
jackdaniel
bike: yitzi: where will I find the throw/catch implementation in the clasp version of cleavir? (I gather that cleavir does not include it beacuse it is runtime-specific(?) ?
10:07:54
yitzi
jackdaniel: Bike will probably have to help with the actual details. The Clasp specific Cleavir code is in src/lisp/kernel/cleavir
10:08:03
yitzi
There is some catch stuff here https://github.com/clasp-developers/clasp/blob/5c9f7ed830a35c9bdc43e3f82ddbe94456780a38/src/lisp/kernel/cleavir/landing-pad.lisp#L43
10:10:01
jackdaniel
I'm more interested in how it is represented in BIR (since it is explicitly excluded in the cleavir canonical repository)
10:11:44
yitzi
I think that the expected failure ansi-test PR is done. I'd like to rewrite the README and maybe use Markdown. Maybe leave that to another PR since I'd like to start fresh after I'm done with a few other PRss.
10:16:03
yitzi
I just did a squash to clean up the commit history. So it is ready for a final review if you want. Cheers!
12:37:11
bike
jackdaniel: catch/throw are not represented in cleavir right now. clasp defines catch and throw as macros, which expand into calls to core:catch-function and core:throw-function. the macros are defined in lsp/claspmacros.lisp and the functions in core/compiler.cc
12:41:13
bike
jackdaniel: the code yitzi linked is about C++ catch, which is different from lisp catch
12:45:39
jackdaniel
was there a technical problem with cfg that catch/throw is not included, was it not worth it, or simply it was never implemented?
12:48:55
bike
it's possible i should bother, since we still use the predlib code that uses catch and "inlining" might speed it up a bit
12:50:40
bike
which is iirc what sbcl does - (throw tag form) ends up as (multiple-value-call #'%throw tag form) or something