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
|