Search
Friday, 16th of October 2020, 8:20:26 UTC
14:30:02
beach
Hello drmeister. Hello Bike.
15:31:44
drmeister
How are things in BIR land Bike?
15:37:03
Bike
pretty well. machine code disassembly is borked as i mentioned, but we're approaching parity with hir. and karlossz put in the loca call analysis so we're doing better on that front.
15:37:53
Bike
Coudl you look at kpoeck's pull request? https://github.com/clasp-developers/clasp/pull/1060
15:42:13
drmeister
What's wrong with clasp_to_fixnum(T_sp thing)? I want something that will raise an error if T_sp is a hash-table or something.
15:43:09
Bike
you can do that with gc::As<Integer_sp>, no?
15:44:47
Bike
or rather, the issue might just be that it's declared twice for some reason
15:59:44
Bike
karlosz: did you not build clasp after your cleavir changes? we still have things using map-instructions. i can rewrite them, but did you not?
16:14:15
karlosz
Bike: i thought i did.... mustve gotten the wrong cleavir commit
16:14:42
karlosz
sorry about that, could you rewrite them?
16:14:48
karlosz
should be straightforward i think
16:17:05
karlosz
ugh... i grepped for (map-instructions instead of (cleavir-bir:map-instructions
16:39:02
Bike
so does unwind not have the continuation as an input now?
16:52:13
karlosz
the catch slot represents the saved continuation
16:52:36
karlosz
i'm just identifying what used to be the cont var with the catch itself, since the cont var was ssa anyway
16:53:27
karlosz
this way we also justify having a backpointer to the catches bound in a function, which both pcv and eliminate-catches can use
16:53:41
karlosz
as well as any other operations which want to deal with nonlocal exits
16:54:56
karlosz
using the backpointer space that used to be reserved for contvars
17:51:33
Bike
if you compile (flet ((%f (a) a)) (%f)) you get a BUG: No variable for datum: #<ARGUMENT a>
17:52:12
Bike
something to do with local call analysis? if you have (%f 4) instead there's no problem
17:55:20
Bike
yeah, if i turn it off it goes away
17:56:58
Bike
and it passes the verifier. dammit
17:58:52
Bike
check-argument-list-compatible always returns t but it looks like stuff checks it
18:00:16
Bike
ok, that seems to be the issue.
18:02:33
karlosz
yeah it was supposed to warn :(
18:02:46
karlosz
and then switch to not converting
18:02:51
Bike
yeah that's the part that's busted.
18:02:56
Bike
it's a simple fix, i'll push in a minute
18:03:34
karlosz
ideally we'd generalize that to not just required args
18:03:46
karlosz
but lambda list parsing = ungood
18:04:21
karlosz
not even sure how to represent &rest
18:04:25
Bike
we might need the compiler to understand defaulting
18:04:57
karlosz
either having entry points explicitly represented in bir or otherwise
18:05:17
karlosz
&rest could totally be elided at compile time by taking the max of the supplied arguments of the local calls
18:05:27
karlosz
and defaulting unsupplied
19:07:57
Bike
bir clasp is passing internal tests, except for ones relating to elt
19:08:08
Bike
since i shut off the inline definition and the C++ definition doesn't do enough error checking
19:08:14
Bike
(so, not a flaw in the bir compiler)
19:13:42
Bike
i dummied out most of the definitions in inline.lisp, since they require primops and stuff that i was too lazy to implement immediately
19:13:49
Bike
lacking that definition, elt is the C++ definition
19:13:58
Bike
and the C++ definition doesn't do enough error checking.
19:14:18
Bike
probably the good way to handle elt would be bla bla type propagation rewrites bla bla
19:14:26
Bike
plus fixing the C++ definition i guess
Friday, 16th of October 2020, 20:20:26 UTC