09:14 FROGGS joined 09:38 dalek joined 10:04 pyrimidi_ joined 13:50 mst joined, mst_ joined 13:57 mst joined, brrt joined
dalek arVM: f47a6ce | jnthn++ | src/6model/reprs/MVMMultiCache.c:
Remove not-exactly-right and unhelpful comment.
14:07
14:47 brrt joined
brrt good * #moarvm 14:53
timotimo hey brrt 14:55
brrt hey timo
how are you
timotimo i'm all right, i think 14:56
i'm glad i had a bit of energy to start work on the split_bb_at function, but i'ven't been able to actully test it yet
brrt hmmmm 14:58
i have an idea
timotimo oh? :)
brrt put in test code that splits basic blocks at every 'say' op
they are basically never used
timotimo that's not bad 14:59
brrt count on me for you daily evil hacks ;-)
timotimo \o/
brrt if i ever start blogging again, i should have a sections 'madmens hacks' 15:00
anyway
i will hopefully have time again to work on moarvm in some weeks
because, i am soon to be finished with my thesis
timotimo \o/ 15:01
with the exprjit, guardcontconc and friends will hopefully become quite a bit cheaper
brrt some time, at least, because i'm starting my new job just afterwards
timotimo because right now we have that as "check if it's concrete, call its .fetch and check the result against the provided type"
but i expect the .fetch (aka decont) could be quite a bit cheaper if it were spesh'd, too 15:02
brrt well, i think the point of that is more that we should internalize the rakudo extensions
timotimo i.e. if we were able to turn it into a sp_p6oget_o or sp_geto or what it's called
that, too
but i don't see how that directly interacts with what i mentioned?
brrt i think... hmmm.. 15:03
timotimo also, after a guardcontconc (or whatever) we're likely to have a decont following it to use the actual value inside, so we'll end up deconting at least twice
brrt right
so we should kill that bit where we have to decont in the guard
timotimo hm, though, making the decont better relies on knowing the type, right?
brrt i think so... 15:04
timotimo maybe that's also part of what's guarded for. so instead, we should replace the upcoming decont with just re-using the value we found when guarding? maybe?
timotimo checks the code again
brrt this is another one of these areas where i don't really know
timotimo this piece of perf report is so jumbled %) 15:05
the asm is all over the place with regards to the original source code
brrt we could possibly replace the sp_guardcontconc with a guard for the container, a decont, and a guard for the result
possibly one of the reasons why we didn't do that before was that we couldnt allocate a scratch register in spesh, and now we cna 15:06
*can
timotimo what made me aware of this is this
i ran a random example code under perf record -g
and the instruction perf jumped to when i told it to annotate mvm_interp_run, was in "if (r.o && IS_CONCRETE(r.o) && STABLE(r.o) == want_v)"
brrt unrelated thought: i realised that all technical projects have 3 phases, whcih are research, design, and development; no project can skip any of those phases;, most development methodologies either conciously or not tend to ignore one of them 15:07
timotimo that's in guardcontconc
brrt uhuh..... (what does perf record -g do?) 15:08
timotimo same as perf record, but also records the stack above whatever got sampled
need it to get inclusive vs exclusive measurements
brrt aha 15:09
(for instance, 'waterfall' tends to ignore or minimize the research phase; while 'scrum' tends to focuso on development to the detriment of all else, substituting meetings for design) 15:10
psch brrt: i think specifically for waterfall that's an artifact of how new and quickly-growing IT is 15:12
brrt: as in, in traditional engineering projects, waterfall comes with a research phase
brrt i tend to think that waterfall is kind of a strawman
timotimo waterfall is meant to have the research phase in the beginning
where you run interviews with users and such 15:13
brrt in traditional engineering projects, prototypes and mockups are par for the course
and macquettes etc
timotimo i don't know what a macquette is
brrt it is possibly a dutch word
timotimo sounds a bit french :)
brrt a small scale model
timotimo ah
mockup :)
brrt right
timotimo well, it sounds like that at least?
brrt yeah 15:14
you get the point at least :-)
timotimo aye
brrt well, point is, there is nothing wrong with a 'waterfall' model /if/ a prototype has proven that the principle is sound
jnthn was part of a team doing scrum for some months, and can relate to the meetings/design thing 15:15
brrt and neither is there anything wrong with agile, /if/ it manages to keep a proper place for research and design
timotimo i wonder if the split_bb_at api should also take an extra BB and make sure that gets properly hooked up
jnthn There's this notion of "ok, this task is bit, let's break it down" 15:16
timotimo rather than asking the consumer of the API to do that
brrt what extra bb is that
timotimo well, i split bbs because i want to turn the tail of the bb into two parts
brrt yeah, i think it isn't quite obvious that this is a design thing to do
jnthn But to me decomposition is one of the hardest things to get right.
timotimo in my use case that's the original tail and a deopt bridge
brrt uhuh
jnthn And there's no way I can do it optimally in a meeting.
I don't even think it wants doing by a group.
psch well, "design by comitee" is meme for a reason 15:17
+t
brrt could also explains why most engineers hate having to make estimates, because we're often asked to do this before we have even started the research phase 15:18
jnthn timotimo: I'd keep split_bb as just doing the splitting. Done one thing and do it well. :)
timotimo mhm, right
brrt agrees
jnthn *Do one...
timotimo though i think i want to add a second function to do the splicing, then
jnthn timotimo: Sure :) 15:19
timotimo it'd have to touch the forked bb to add an extra succ, and an extra child, as well as give the new bb its pred
we don't link from child to parent, at least
though maybe at some point we'll want to?
because succ vs parent isn't 1:1, right? 15:20
jnthn child/parent are about the dominance tree
next/succ are about the CFG
timotimo yeah 15:21
is dominator tree only interesting for creating the SSA, though?
won't we want to sometimes ask the dominator tree what's what?
jnthn Well, we use it as a traversal order for one
timotimo that part i remember
jnthn And I believe get some safety promises as a result 15:22
rt.perl.org/Ticket/Display.html?id...8a78838a6d is some kind of MoarVM bug around call captures...ran out of energy to hunt it for now 15:23
Can reproduce it just by cloning the Perl6-Base64 module of ugexe and running the second test under perl6-valgrind-m 15:24
Will continue on it next week but if anyone fancies a bug hunt... :-) 15:25
bbiab
15:49 domidumont joined 15:55 domidumont joined 16:10 domidumont joined 17:04 domidumont joined 17:59 rurban_ joined 19:51 domidumont joined 21:15 zakharyas joined 21:45 TimToady joined