freenode/#clasp - IRC Chatlog
Search
14:53:33
karlosz
so ive gotten enough contification working to get this compiled to a tight loop https://paste.gnome.org/p7l7au4a0
16:27:53
drmeister
I just checked it - yes ---- Did you add it to your DEBUG_OPTIONS = [ "DEBUG_COMPILER" ]
16:33:36
drmeister
Check *features* - it should be there - if it is - then it needs a rebuild - the verify-module and verify-functions are featured out with #+debug-compiler - correct?
16:37:00
drmeister
Nevermind - it was my screwup - I hacked wscript to write to /tmp/build.lisp and then conflated it with build.log
16:38:13
Bike
oh, because the log files interleave. i see. yeah putting the pid in there might be good.
16:44:54
Bike
I mean even if there's multiple simultaneous builds it mostly just seems to slow it down a bit
16:45:34
drmeister
I need to get a docker image rebuilt and so I quickly need to test and debug some stuff.
16:46:13
drmeister
I was being blocked by this stupid file that I was generating in the wscript file.
16:49:53
drmeister
I'm turning off all llvm inlining and optimization to test the effect on the final stage of building cando - including compiling quicklisp packages.
16:51:19
drmeister
ASDF since version 3.1.x has radically changed its internal structure (according to Fare in the ASDF mailing list) and POIU is out of date.
17:31:10
drmeister
The verify-function verify-module functions don't report anything if there is no problem.
17:51:12
Bike
i had to add a core:function-lambda-list alias so slime would still work, but that's not a big thing
18:04:27
Bike
also, before, about rewinding valists- i think i spoke too soon. with required, optional, rest arguments it should be easy, but for key arguments we grab them in a loop, so we either unroll a little or do something like va_arg does
18:04:41
Bike
though i confess i don't understand why valists would be redone with all the register complication
18:10:03
Bike
so the last eval is (read-from-string (cdr entry)), in process-command-line-load-eval-sequence.
18:47:28
Bike
drmeister: we were reading the environment wrong. (entry . 0) just meant 0 was the index- the actual value was (:eval . (core:quit))
18:54:29
Bike
drmeister: if i'm looking at the argument valist, it's empty (whereas it should have one value, the string).
19:02:38
drmeister
And what I'd really want to do is get a break point on the entry to the function and see what is going on with the arguments.
19:03:17
Bike
read-from-string takes both &optional and &key, so i can imagine there being an issue- i didn't test that.
19:03:33
Bike
but i just replaced the keyword argument compilation, all the other stuff is the same.
19:04:52
Bike
anyway i don't know what the raw tagged pointer is. i have (core::T_sp)headFunc = (theObject = 0x###)
20:08:38
kpoeck
Did you see issue ##574: New Lisp dialect with no gc rely (use reference count and develop by C++) call for notice and help
20:09:51
Bike
drmeister: I essentially didn't think about the case of having both &optional and &key, so I have to do some rewriting.
20:12:43
kpoeck
well it links to another github projects, so perhaps its really a cry for help, but definitively not a clasp issue
20:14:47
Shinmera
ACTION remembered the time he wrote his own lambda-list destructurer https://github.com/Shirakumo/maiden/blob/master/agents/commands/parsing.lisp#L127-L242
20:15:32
Bike
which there is only one of, because cleavir doesn't handle it. except it does for macro lambda lists
21:08:51
drmeister
apropos is blowing up - I guessed (wrongly) it had something to do with cyclic package uses - I fixed cyclic package uses - apropos continues to blow up.
21:11:56
Bike
if we have the lambda list X we basically do "x1 = va_arg(va_list); x2 = x1;" and then x1 is never referred to again, unless i'm missing something
21:15:38
drmeister
I'm pretty sure they are how I deal with bclasp needing to put them into lexical variables stored in value-frames (until they are optimized away) or in Cleavir to put them in lexical variables.
21:16:51
Bike
i'lll look at it... it just seems pretty bizarre since they both have to be allocas anyway.
21:17:38
karlosz
a little stupid but contifying can reduce this down to nop infinite loop https://paste.gnome.org/pp7s1rflb
21:27:29
Bike
The curreng arguments code increments an arg-idx-alloca for every argument processed. But then the rest argument compiler ignores that and uses calling-convention.nargs* instead. How does that know how manya rguments are left?
21:33:17
Bike
i think we are probably giving llvm kind of stupid code, and doing lotsof weirdthings beside.like i'm pretty sure we initialize va_lists if we just use register arguments
21:34:34
drmeister
I think we initialize va_lists when we use register arguments to spill them for backtraces.
21:38:39
Bike
ok, wait.maybe calling-convention-args.va-start only sometimes actually generates a va_start
21:42:08
Bike
vaslists are a va_list plus the count,right? where do we use the count? i don't think we need it for argument parsing.
21:45:00
Bike
right, that's where we need some kind of size, but we can deal with it separately in the arguments code, rather than embedding it in the vaslist
21:59:54
drmeister
While you are working on the &key argument handling - are you taking out the PHI node code>?
22:02:00
drmeister
It's funny how I said that about needing tail-call optimization and we both keyed in on using tagbody/go
22:03:27
Bike
I'm still using phi nodes a bit, but I put a lot of comments, and pseudo-C to explain what it's supposed to look like.
23:40:33
drmeister
I haven't seen that - but I suspect something weird in the file system and an infinite recursive loop due to a symlink or something.
0:11:08
karlosz
drmeister: you won't believe this. the culprit is python3.7, which has a breaking change
1:50:48
karlosz
looks like we cant afford to do value numbering on closure vars. dataflow analysis on a higher order graph requires kCFA which is a known exponential/nfeasible problem
1:51:34
karlosz
our best bet is to aggressively inline and get rid of local functions whenever possible for dataflow
1:54:09
karlosz
i don't know if anyone is still interested in at least getting something like 0CFA for cleavir. could be useful for a static analysis, rather than actually compiling http://matt.might.net/articles/implementation-of-kcfa-and-0cfa/
2:28:31
drmeister
The article says that there are cubic implementations - is that still out of the question?