01:48 ilbot3 joined
konobi jnthn: there's an extremely efficient algo in zfs for doing that shared space stuff, since it's the main thing behind the dmu 04:55
07:32 domidumont joined 07:37 domidumont joined 07:53 lizmat joined
konobi also... github.com/lovasko/bc_thesis 08:06
08:31 Ven joined
konobi and... queue.acm.org/detail.cfm?id=2492433 10:16
which leads to... concurrencykit.org/ 10:52
11:07 diakopter joined 11:26 zakharyas joined 11:29 Ven joined 11:55 Util joined 12:01 brrt joined
brrt ehm, i'm looking for something, and i can't explain why this has never crashed before 12:08
timotimo oh my :)
brrt github.com/MoarVM/MoarVM/blob/mast....dasc#L162 12:09
this
we cmp ref with 0x0
and then
we proceed to dereference it anyway
wtf
this has been here for over 2 years 12:11
lizmat maybe we never reach that code ? 12:13
brrt we reach it, it's just never zero 12:15
it's supposed to be the same as github.com/MoarVM/MoarVM/blob/mast...gc/wb.h#L8 12:16
but it's not shortcircuiting
timotimo maybe because we make sure to have VMNull everywhere?
and never use nulled out objects registers unless we explicitly handle it in the code itself?
brrt probably 12:19
this value comes from getdynlex
anyway, will investigate later
timotimo 'k
brrt (it's reframe-jit speciifc afaik)
konobi is there much use of COW semantics in GCs? 12:38
timotimo in general, you mean? 12:39
konobi yeah 12:44
timotimo i bet there's some papers on that already. no clue about implementations "in the wild", though
konobi seems to me like an implementation similar to how the ZFS DMU does COW and it's GC would be very fitting for memory and GC in dynamic languages 12:49
huh... and i just thought of a cheap way of doing GC with COW semantics 13:11
lizmat konobi: PR's are accepted by jnthn on a regular basis :-) 13:17
timotimo i'm not sure file systems have to deal with as much traffic from little files as a dynamic language's memory management would 13:19
but i'd gladly be corrected :)
13:51 brrt joined
brrt fairly sure this is probably a case of a missing MVMROOT... :-( 14:14
or, write barrier check somewher 14:15
timotimo you haven't told us yet what exactly you're hunting 14:16
brrt i'm getting a SEGV on running rakudo tools/build/install-core-dist.pl under reframe-jit 14:20
i'm also getting a 'cannot invoke this type' error on building CORE.setting 14:21
i'm kind of hoping the former is easier to find than the latter
timotimo you should merge the newest moar commits that give you more info for the "cannot invoke this type" error
14:55 dalek joined
brrt hmm, maybe, but i imagine jnthn will want to merge that too, and i try to base off reframe 15:17
timotimo OK, but you can also just merge it temporarily locally-only :) 15:27
just to make your life easier for finding this problem out
brrt true.. 15:32
also possible that it is just a NULL pointer error
timotimo you mean a VMNull? 15:34
brrt hmm, yeah, the think we're looking at is VMNull 15:42
so why
theory; jit_entry_label is borked 15:47
timotimo it's not moving right? 15:50
brrt well, it's a negative offset from the function entry 16:29
timotimo that's weird, yeah
gist.github.com/timo/5843f49fe287e...78743e6d0c - do you see this shit? %) 16:31
brrt what's bad about it? 16:32
timotimo boxing an int, just to unbox it again in order to box it into an int again 16:33
brrt ah, the last parts 16:34
how difficult would it be to eliminate that using spesh?
timotimo it's the lost parts, yeah
this particular thing should be quite doable
brrt better theory 16:35
(you can look at decont, and see if it's source input is a boxing op?)
we're in the wrong frame altogether 16:36
we're not looking at the right frame
how even
timotimo we have a "known box source" fact
o_O
this particular part of the whole thing isn't interesting for performance, though ... this is right before the return, it seems like 16:37
brrt we are somehow, jumping into this frame, with the wrong jit_entry_label set
timotimo boy am i glad p6bool doesn't allocate %) 16:43
i don't think we actually have an op that does the same as unboxing a bool that got boxed from an int 16:44
we can't just use the int, because that may have any value :$
we'd have to +& 1 basically
ah, so every instance of me using rand is followed up by a p6box_n usually followed shortly by a decont_n 16:48
16:52 Ven joined
dalek arVM: 6559c2c | timotimo++ | tools/graph_spesh.p6:
spesh graph: rescue a few missing writer-reader arrows

by waiting until the end of the file to find if a given register's writer is anywhere to be found.
17:09
17:47 zakharyas joined 18:11 zakharyas joined
dalek arVM: b69f894 | timotimo++ | tools/graph_spesh.p6:
fix extops not getting their args pointed at

a GLR regression lying in hiding for a loooong time
18:28
18:31 dalek joined 19:25 zakharyas joined
dalek arVM: 4aa9c76 | timotimo++ | tools/graph_spesh.p6:
spesh_graph: colored BBs
20:26
arVM: 818f485 | timotimo++ | tools/graph_spesh.p6:
graph_spesh: a little "mini map" for dominance and CFG
timotimo m) 20:27
the tool changes its name every commit
masak talk about agile development! 20:29
timotimo excellent turn-around 20:30
i think i need a optipng version that uses multiple CPU cores ... 20:32
6768x25391 pixels, 4x8 bits/pixel, RGB+alpha
this might not actually be a very good candidate for getting optipngd
t.h8.lv/fully_operational.png - look at all the pretty lights! 20:57
lizmat hmmm.. my browser only shows this too small or too large :-( 20:59
timotimo yeah, you'll have to be panning around a lot 21:00
but at the top right there's a little "mini-map" :)
i could just export it as SVG instead, which should work much better
t.h8.lv/fully_operational.svg 21:01
lizmat scales better, but not really good yet :-( 21:02
timotimo :\ 21:03
well, it is a huge crapton of content ... :\
i wish i could make things sensibly clickable there so that navigation becomes possible 21:07
i put the "mini maps" on the top left now. reuploading ... 21:08
dalek arVM: 4b23cc7 | timotimo++ | tools/graph_spesh.p6:
graph_spesh: expect debugnames sometimes

like when we have a wval instruction.
21:14
arVM: c3e8bef | timotimo++ | tools/graph_spesh.p6:
move mini maps to the left
arVM: 592cbb4 | timotimo++ | tools/graph_spesh.p6:
graph spesh: vary saturation as well as hue
22:32