freenode/#clasp - IRC Chatlog
Search
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?
3:13:14
karlosz
oh, well if you include higher order functions then you are lucky if you can make it polynomial time
3:15:44
karlosz
the third to last paragraph of this article is extremely enlightening https://wingolog.org/archives/2011/07/12/static-single-assignment-for-functional-programmers
3:17:27
karlosz
we should closure convert as much as possible so that we *can* leverage traditional optimizations
3:18:18
karlosz
i mean, this isnt scheme either though, so i dont know how common functional style even is
3:19:03
karlosz
but since we are thinking about treating closures right, it probably makes more sense to eliminate as many closures as we can and appply linear dataflow optimizations rather than do some cubic or exponential cfa
3:20:39
karlosz
on another note, drmeister: the arch thing people were running into with the boost symbol disaappeared when i reverted to a May 20th version of clasp
3:22:14
karlosz
i started the build a few hours ago on my laptop and it still hasnt finished though so i dont think its possible for me to bisect this issue
3:31:11
karlosz
and clasp bundles waf right? so is there an easy way to use the systems or wait for clasp to update it?