00:09 lizmat joined 01:03 ggoebel joined 01:29 ggoebel joined 01:48 ilbot3 joined
samcv ugh this segfault is so annoying in my font info query module 04:23
i'm trying to rename my fonts but it just still dies at the same place segfaulting
just using run shouldn't be so fragile :\
04:52 brrt joined 05:33 brrt joined
brrt good * 05:34
ohai samcv 05:35
i agree… but i haven't actually looked at why it breaks
.ask jnthn what exactly is the meaning of the DEOPT_INLINE thingie? 06:01
yoleaux brrt: I'll pass your message to jnthn.
06:20 TimToady joined
timotimo hm, whether a deopt inline point has to be put into the code depends on a flag set on the op, but the only inline related :foo i see in the oplist is :noinline and i don't think that's what 06:26
06:47 brrt joined
brrt hmmm 06:48
geth is down? 07:02
anyway
timotimo you commited? :) 07:06
doesn't look like
bleh. man really really sucks when it comes to tables, doesn't it? 07:07
this table has four columns, one of which has contents max 5 chars long, the other one max 2 chars long 07:08
then there's a name field that's a bit longer and a description field that's usually many lines long
Geth MoarVM/even-moar-jit: 46aa94339e | (Bart Wiegmans)++ | 6 files
GUARD node should have separate before and after controls

It can now be reused to issue dynamic label controls before and not after the controls. The tiler is dumber, the expression tree builder is more clever, but it is in a better position to be anyway.
timotimo imgur.com/AFCn7hX WHHHYYYYYYYyyyyy 07:09
brrt lol
timotimo man7.org/linux/man-pages/man5/terminfo.5.html - not better >:(
brrt not really 07:10
yeah, i merged in master so we're like, totally up to date again
timotimo cool 07:11
brrt but like i said, that uncovered the fact that the expression builders' approach to annotations is completely broken 07:12
timotimo good to know! 07:13
reading the commit right now
brrt it also underscores the fact that relying on the JIT to insert the code to keep track of the 'current position' is suckage itself
timotimo "the jit" or "the template jit"? 07:14
brrt both
we can get the current position from walking the stack
but that requires a bit of assembly
timotimo mhm 07:15
brrt and build system support
timotimo oh?
brrt now, i know that clang and gcc can consume assembly just fine
but msvc doesn't
timotimo fantastic
just assemble the right code at run-time :)
brrt fortunately, microsoft does ship the assembler
could do that, yes, but it is wasteful
timotimo in fact, why don't we rewrite all of moarvm in exprjit and just have a tiny stub that starts up and bootstraps moar itself from the jit info 07:16
brrt there are a bunch of reasons not too
but, arguably, most of them are either historical: we already wrote moarvm in this other way
and the other reason is, the expr jit isn't very good yet so it would currently suffer a considerable slowdown 07:17
by the way, that's exactly what m0 was trying to do for parrot
timotimo oh, huh
brrt obviously, they never had a JIT for that
thirdly, if you're going to go that path… then I suggest LLVM starts to make a bunch more sense than it does now
timotimo pypy does have a great benefit from the whole interpreter and compiler being traced down to almost-assembly
but i'm not serious about this :) 07:18
brrt pypy does, yes, and luajit
well, i am :-)
it *is* a good way to design an interpreter
if high performance is the goal
it's is not a good way to achieve high portability
timotimo mhm 07:19
brrt luajit2 was ported to powerpc, and it took like, a ton of money from IBM to get that done
now, i don't mind porting moarvm to powerpc with a ton of sponsorship… but
i have to be realistic at some point
timotimo you don't think sponsoring would be feasible? 07:20
brrt honestly, i never have really asked
but i frankly foresee an uphill battle :-) 07:21
(I think _why had an interpreter/jit he designed over a $short-period-of-time based on exactly the same idea) 07:22
timotimo oh my, tput blink actually does blink text for a little bit
i never knew about this feature
07:23 domidumont joined
timotimo it blinks the text forever, but only while the terminal is focussed (in Konsole at least) 07:24
07:25 zakharyas joined
jnthn morning o/ 08:51
yoleaux 06:01Z <brrt> jnthn: what exactly is the meaning of the DEOPT_INLINE thingie?
jnthn brrt: It's a deopt point in something that has been inlined 08:54
The point iirc is to ensure that we end up with them in the inlining routine's deopt table 08:55
brrt aha 08:56
jnthn And to fix them up correctly when doing nested inlines
brrt i see
08:58 zakharyas joined
samcv grant status update 2 up cry.nu/perl6/grant-status-update-2/ 09:03
jnthn samcv: Are you on OSX? 09:05
samcv no
jnthn OK. You mentioned something about run and segv 09:06
samcv oh
nope i'm on linux
i opened a moarvm bug for it
but yeah that's what is causing it
crap did i not finish a bug
jnthn doesn't see it in issues 09:07
nine samcv: FWIW I tried to golf your run issue but just couldn't get moarvm to misbehave :/ Well, except with perl6 -e 'for ^10000 { my $proc = run << cat >>, :in, :out; $proc.in.say: $_; $proc.out.get.say; }'
That ends up with "MoarVM panic: Internal error: zeroed target thread ID in work pass".
samcv ok now it's submitted :) github.com/MoarVM/MoarVM/issues/608
i started finishing my grant update and didn't hit submit :) 09:08
jnthn nine: ooh, that sounds related 09:14
I wonder if I can get it to crash 09:15
hah, segv 09:16
During GC freeing
Stranger still, after a while the output becomes Nil 09:20
Hmm 09:21
But this example never does .close
So it'll be leaking handles like mad
nine jnthn: yes, that's intentional. Since I couldn't find anything wrong with correct usage, I tried to use it wrongly. 09:23
jnthn hah, the GC debug mode caught it 09:25
brrt GC debug mode ++
jnthn Indeed, though it's still hard to spot 09:32
oh, duh 09:33
Geth MoarVM: 4e29e4c717 | (Jonathan Worthington)++ | src/io/procops.c
Fix an accidental nested redeclaration in proc.

This meant that the boxed error message that we produced as not being MVMROOTed, so it could become out of date.
09:39
nine Oh, that's a devious one
jnthn Indeed 09:40
Was staring at the code for a while to figure it out
Font query still SEGVs, alas 09:42
Hm, in MVMCallCapture.c's gc_mark function :/
jnthn turns GC debug up to level 2 just in case 09:43
Which finds nothing, alas 09:44
Lets see about valgrind
Which is as glacial as you might expect 09:46
nine I thought will global warming glaciers are not as slow as they used to be 09:48
jnthn Pretty sure my CPU is contributing at the moment... :) 09:49
nwc10 it wants you to go to lunch 10:08
a looooooooooong lunch break
jnthn Ended up working on the spesh guards redesign while it runs 10:09
(yes, it's still running o.O)
nwc10 wonders if it will finish before ilmari goes to lunch 10:10
Geth MoarVM/spesh-worker: a1b7cd868a | (Jonathan Worthington)++ | 3 files
Sketch out new arg guard data structure.
10:38
10:45 robertle joined
dogbert17 clickbaits gist.github.com/dogbert17/4e860f64...d6b30945d7 10:55
jnthn Oops, that looks like a premature gc_free 10:56
jnthn cancels the valgrind 11:00
Ohh, it did spit out invalid reads as it went 11:01
dogbert17 cool
jnthn And yeah, they look the same as your ASAN output
Alright, got a rough plan for the spesh guards changes now 11:04
Lunch, then will work on it
ilmari nwc10: lunch! 12:00
sausage guru!
jnthn Mmm...sausages :) 12:01
ilmari www.sausageguru.co.uk/
they have a food truck outside the office 12:02
jnthn Ooh, nice :) 12:03
ilmari[m] uploaded an image: file1499256799300.jpg (310KB) <matrix.org/_matrix/media/v1/downlo...HFNHMi> 12:13
Having a Günther's Fav
12:25 zakharyas joined
jnthn Mm, sounds delish 12:26
Geth MoarVM/spesh-worker: af983b4c08 | (Jonathan Worthington)++ | 6 files
Hang argument guards off static frames.

Also add GC marking and cleanup of them.
12:48
MoarVM/spesh-worker: 802bba1c35 | (Jonathan Worthington)++ | src/spesh/stats.h
We shall also need stats on container rw-ness.

This isn't yet logged, but adding it to the stats data structure as it will be needed as part of the log guards migration.
13:24
MoarVM/spesh-worker: 33af11c084 | (Jonathan Worthington)++ | 2 files
Differentiate between used and total nodes.
jnthn My rough plan is to use the new specialization selector thingy in existing spesh, to ensure it works 13:33
13:34 buggable joined 13:36 buggable joined
Geth MoarVM/spesh-worker: c7045e7665 | (Jonathan Worthington)++ | src/spesh/arg_guard.h
Need an op for callsite matching also.
14:00
14:06 buggable joined 14:08 buggable joined 14:10 buggable_ joined 14:18 brrt joined
Geth MoarVM/spesh-worker: d17c40af2b | (Jonathan Worthington)++ | src/spesh/arg_guard.h
Specify how no-match terminates.
14:21
MoarVM/spesh-worker: 50577a9596 | (Jonathan Worthington)++ | src/spesh/arg_guard.h
Give the deref ops better names.
14:34 brrt joined
Geth MoarVM/spesh-worker: b40d7650e6 | (Jonathan Worthington)++ | 2 files
And provisional spesh arg guard dumper.
14:46
MoarVM/spesh-worker: 134e3f0484 | (Jonathan Worthington)++ | 2 files
Add provisional spesh arg guard dumper.
jnthn Darn typos :)
Geth MoarVM/spesh-worker: 9f02298c87 | (Jonathan Worthington)++ | src/spesh/dump.c
Add missing newline to result node dump.
14:57
14:57 buggable_ joined 14:58 buggable joined
Geth MoarVM/spesh-worker: c0ffc6df67 | (Jonathan Worthington)++ | 2 files
Build up guard tree by callsite.

Adding the type gurads into the tree is still to come.
15:14
MoarVM/spesh-worker: 45a961a9b8 | (Jonathan Worthington)++ | src/spesh/candidate.c
Build/dump new guards in existing spesh.
jnthn The types bit of it is quite tricky 15:16
Or at least, the general case is
In that under new spesh it will be able to decide no to guard on certain things in some cases 15:17
Geth MoarVM: vendethiel++ created pull request #609:
Fix typo in add_guard
15:24
15:24 Ven`` joined
Geth MoarVM/spesh-worker: 7598dfdfdb | (Jonathan Worthington)++ | src/spesh/arg_guard.c
Correct thinko; great catch by Ven++.
15:25
jnthn oh, you did a PR while I was fixing it :)
Ven`` Closing PR :) 15:26
I hope there's a blog post about this part in the distant future, it seems very interestng.
jnthn Yeah, there will be 15:28
jnthn still has a queue of things to blog about
Did manage to get at least one of them done recently :)
15:33 zakharyas1 joined 15:53 brrt joined
brrt ohai #moarvm 15:53
the train operator has been so kind to give me internet
Geth MoarVM/spesh-worker: d534d97536 | (Jonathan Worthington)++ | src/spesh/arg_guard.c
Insert arg load ops.

For now, the sparse type tuple case cannot occur (since spesh will currently pick a type for every arg to specialize on); this part will be added when this is later relaxed, when there will be a way to hit such code paths.
15:55
jnthn brrt: I hope that's not in return for a delay :) 15:56
timotimo hm, that's an chaining infix operator, isn't it? 16:01
brrt well, yeah, it kind of is
or a detour if you will
funny thing
train was cancelled, but ICE was reported to be running 16:03
so, obviously, I try to go get that ICE
1 minute or so before it leaves, they say that it has been rerouted and will not stop in the netherlands at all
so had i taken it, i'd be on my merry way to germany
jnthn: it occurs to me that the spesh annotations have like, no guarantee at all not to be conflicting 16:04
jnthn Surprise bratwurst!
brrt :-D
and that, for the JIT at least, handling can introduce conflicts galore
the good news
they did that already
well, not really, though, some of them would be handled prior, and some posterior, and the expr jit doesn't make that distinction 16:05
let's hope that doesn't kill me....
… i can think of a way in which it won't, though
jnthn What conflicts do you have in mind?
brrt for instance, between FH_END and INLINE_END 16:06
FH_END marks an exclusive end, so we need to insert a label and an 'label-loader' prior to the instruction 16:07
INLINE_END marks an inclusive end, so we need to insert a label after the instruction
only trouble is, when we insert a label-loader, we do so by wrapping, which replaces the node that is to become a root 16:08
but when we insert a posterior label, i 'hack' that by inserting the current node as a root and making the label-insertion into a root 16:09
so...
the real problem is
i'm hacking stuff together
jnthn Why can't we insert before/after in that case? :) 16:10
brrt because in my hack, i could either up in the good case: FH_END comes before INLINE_END, in which case i'll insert the wrapped node first and the label second, or in the bad case, in which case IINLINE_END comes before the FH_END, and I try to wrap the node that makes the label 16:14
which would be bad
the 'obvious' fix is to 'collapse' the ocnflict 16:17
and split the business into a before_label and an after_label
wrapping is now a separate business
Geth MoarVM/spesh-worker: 5f2dc0dbf4 | (Jonathan Worthington)++ | src/spesh/arg_guard.c
Insert top-level types into guard tree.

Again, making the assumption that we only have the kinds of specializations that current spesh produces; this will need a tweak once we have those that aren't predicated on type tests.
16:23
jnthn Alright, enough for today. Tomorrow I try and get this guard tree stuff finished enough for what spesh can do today 16:27
Then will write the interpreter for it
Maybe will get far enough tomorrow to be able to switch over to using it 16:28
bbl 16:30
16:56 domidumont joined 17:08 Ven`` joined
Ven`` jnthn: I'm probably pushing my luck, but reading github.com/MoarVM/MoarVM/commit/5f...6c6f6R113, it seems like ag->nodes[0] is never considered? 17:14
jnthn Ven``: Never, or just in get_type_check_node? 18:26
Ven``: The tree structure we build is such that such a node could never occur at top level, though
19:33 buggable joined 19:40 buggable joined 20:03 AlexDaniel joined 20:24 FROGGS joined 20:30 AlexDaniel joined 20:48 Ven joined 21:21 Ven_ joined 21:35 Ven_ joined