01:33 japhb left 01:46 Kaiepi joined 02:32 Kaiepi left 02:33 Kaiepi joined 02:59 lizmat left 06:00 Geth left 06:01 dalek joined, Geth joined, p6lert joined, synopsebot_ joined
Geth MoarVM: eed6fbb312 | (Samantha McVey)++ | src/core/interp.c
Put interp.c in the same order as the oplist
06:39
MoarVM: samcv++ created pull request #873:
Add more expr JIT ops
06:42
samcv if someone can take a look at that pull request ^ this is my first time adding things with the expression jit engine
07:06 lizmat joined 08:18 robertle joined 08:59 robertle left 09:40 lizmat left 09:49 lizmat joined 10:41 dogbert2 left 10:50 dogbert2 joined 11:34 SourceBaby joined 12:16 Util joined 12:22 zakharyas joined 12:33 robertle joined 12:40 zakharyas left 12:53 domidumont joined 13:00 domidumont left 13:01 domidumont joined 13:06 domidumont left
timotimo FWIW, hack died again last night. afl isn't really interested in resuming existing runs, so this is where that ends. 13:50
moritz :( 14:00
timotimo no big deal, the nqp fuzzing kind of led nowhere, i just didn't have the heart to stop it ;) 14:01
14:09 MasterDuke left, MasterDuke joined
dogbert17 I have a moronic question. What's the correct way to run Rakudo on an older nqp revision? Just building an older nqp and installing it in the Rakudo install directory doesn't seem to be the correct way to do this. 14:30
jnthn Hm, I think it is, though you'd need to re-compile Rakudo too? 14:31
dogbert17 things go south if I do that with 'perl Configure.pl --gen-moar --gen-nqp --backends=moar' followed by make, nqp is rebuilt with the latest version then 14:33
perhaps I shouldn't use the nqp which is created in the Rakudo directory fot stuff like this
jnthn Ah, the --gen-nqp is the problem 14:35
Remove that and --gen-moar and then provide --prefix=/path/to/install
That said, you can also I think do --gen-nqp=sha1
dogbert17 cool, I'll try
jnthn Where the sha1 is the NQP build you want
dogbert17 interesting, I'll definitely try that. Perhaps I'm attacking this all wrong but I want to find which nqp commit broke the (s)printf tests 14:36
nine I wonder why we create such bad code as: gist.github.com/niner/d6e718fe499a...c705627d45 14:39
Shouldn't this just become "create r14(4), r14(3)" or am I missing something? 14:40
jnthn It'd normally kill of the p6decontrv, I'm guessing it doesn't know the type of r27? 14:41
In the create 14:42
Also, note that we don't actually create such bad code. That's what we're left over with after gutting numerous other things :)
I suspect many `set` instructions live on due to over-conservative deopt tracking 14:43
We don't yet have enough information to decrement any usage counts that we bumped for the sake of deopt 14:44
takedispatcher could be eliminated over inlines, we just didn't do that yet
14:44 AlexDani` joined
jnthn Ah, and it's not quite trivial to do it either 14:45
nine So in which cases would it be ok to remove an inlined takedispatcher?
jnthn Um
Actually it's quite hard to say :(
Because takedispatcher checks if a dispatcher was set for this frame
Well, this block
14:45 AlexDaniel left
jnthn And so we can't actualy figure it out by looking at what we're inlining into 14:45
I remember this now. I once thought "ah, we can toss those out easily" 14:46
And it turns out...not really.
I'm a bit bothered by the way we deal with callsame and friends in general, though. It's quite hard to optimize. 14:47
The design pre-dates having anything like spesh, so wasn't really done with that in mind.
It also uses one of the hairiest Rakudo ext-ops 14:48
nine Intriguing: it seems to know the type passed to the create, but doesn't know the resulting type.
jnthn Huh, that's odd
The facts logic should always propagate that
And I thought we ran the facts analysis on inlinees now
Oh hurrah, finally some rain here 14:49
nine We actually do
14:49 AlexDani` is now known as AlexDaniel
AlexDaniel dogbert17: actually I attempted something similar yesterday and faced similar issues 14:50
nine Also I'm talking about the original spesh of the to be inlined function: gist.github.com/niner/19b131d9e803...160b75364e
AlexDaniel for me, doing `git checkout 2018.05`, `make realclean` and then the regular Configure stuff doesn't work
I'm not sure which files are left behind, or somethingā€¦
nine Of the "create r4(2), r0(2)", r0(2) has KnTyp while r4(2) doesn't 14:51
jnthn nine: Do you have the before?
Or rather, can you gist the before?
I'm curious what the original code from
s/from/was 14:52
Maybe we produced the `create`
AlexDaniel dogbert17: fwiw whateverable builds from a completely clean state, so it is more reliable when it comes to questions like thisā€¦
so I guess if I ever attempt to bisect something locally I'll do exactly that :S
nine jnthn: sure, that's the whole thing: gist.github.com/niner/22d119087d65...e42eba0af8
jnthn Hmm 14:54
Odd
Nothing stands out as to why it'd not be propagating the type. github.com/MoarVM/MoarVM/blob/mast...acts.c#L30 should be doing it 14:55
dogbert17 AlexDaniel: so what's, in your opinion, the best way to find the borked nqp commit 14:56
nine It just behaves as if MVM_SPESH_FACT_KNOWN_TYPE wasn't set in type_facts->flags
jnthn Maybe it wasn't for some reason
AlexDaniel dogbert17: have a `git bisect start` in a separate nqp folder, use it for guidance (it will tell you which commits to test). Then wipe your rakudo directory, clone freshly and build 14:57
jnthn nine: Either way, we could probably make sure to try and propagate it at the point we optimize create in optimize.c 14:58
nine Because.... it wasn't known at the time of the fact discovery. It became known by way of optimizing the decont into a set
AlexDaniel dogbert17: simply change the revision in NQP_REVISION, that is known to work
jnthn nine: Aha. 14:59
nine: A little surprised it didn't manage to track that at facts time, still
nine That's at least my best guess
jnthn Anyway, there's nothing to stop us, when seeing a create in optimize.c, setting the result type
dogbert17 AlexDaniel: I'll experiment a bit with what you and jnthn have told me 15:03
AlexDaniel dogbert17: the downside with my method is that with my poor internet connection it will spend most of the time just cloning the repos 15:04
I guess a better way is to teach make realclean to actually clean, dammit. But this will only improve bisects in the future 15:05
dogbert17 things gets very tricky when Rakudo, nqp and moarvm have to change at the same time 15:16
AlexDaniel dogbert17: in this case it's easier because you don't have to worry about moarvm 15:23
dogbert17: maybe we should put some effort into this: github.com/perl6/whateverable/issues/40 15:25
dogbert17: I can actually give you a step-by-step guide on how to implement this, if you're interested
nine jnthn: except that it ends up in all sorts of weird errors... 15:28
dogbert17 I'm beginning to suspect github.com/perl6/nqp/commit/d743c0...d7601b6627 as the cause of the test failures. 15:31
nine dogbert17: I don't like it anyway :) 15:33
dogbert17 :) 15:35
MasterDuke nqp::elems is faster though 15:37
dogbert17 perhaps there's a tiny typo somewhere in that large commit 15:39
15:39 domidumont joined
AlexDaniel dogbert17: so reverting it makes the issue go away? 15:44
nine MasterDuke: may be, but I'm pretty sure, rewriting the stuff in C would make it faster still. Doesn't mean it's the way to go.
AlexDaniel I think this line is incorrect: github.com/perl6/nqp/commit/d743c0...47f3601L41 15:45
but it's irrelevant to the problem
dogbert17 I'm now 99% certain that d743c0f88d is the culprit
nine With the commit reverted, spectest passes 15:46
AlexDaniel nine: what about sprintf("%d-%s", 42) 15:47
what's the output?
nine Your printf-style directives specify 2 arguments, but 1 argument was supplied
AlexDaniel right 15:48
well, there were changes to sprintf: github.com/perl6/nqp/commit/d743c0...fc7b218053 15:52
but I see nothing wrong there
(btw the line I mentioned before is fine, but why .t files were touched at all is still a good questionā€¦) 15:55
timotimo continues the test case minimization with afl
MasterDuke timotimo: you are getting ones you can repro? 15:56
timotimo well, those are the moarvm files, they are reliable
tmin is useful for making the input files simpler
it usually makes them about 10% smaller, but more importantly replaces vast sections with just the ascii digit 0 over and over
so you can more easily figure out what parts of the input make the crash be a crash 15:57
these minimized files won't --dump correctly any more, of course
nine Rain! 15:58
jnthn Really much rain...we had to close the windows because the strong wind was blowing it all indoors too 16:00
nine MasterDuke: same effect as that huge commit (including errors) could be had by adding a single line of code in src/NQP/Optimizer.nqp:293: $op.op('elems'); 16:04
MasterDuke huh, don't think i've ever looked at NQP's optimizer 16:06
any ideas what causes those errors though? 16:07
nine yep 16:12
MasterDuke fixable?
nine trivial 16:13
src/core/Exception.pm6:2043: change num to int
It's because unary + is 'numify' and will return a num while nqp::elems returns an int 16:14
MasterDuke nine speaks the truth. adding that line to the NQP optimizer makes +@ as fast as nqp::elems in NQP and after changing that type in Exception.pm6 rakudo passes a spectest 16:32
does someone who has a rakudo commit bit want to make the change or should i PR it? 16:34
16:40 zakharyas joined
timotimo watch out for problems with the jvm there, though 16:44
just a weak hunch 16:47
native types and the jvm sometimes don't mix as easily as on moarvm
16:58 zakharyas left 16:59 zakharyas joined
MasterDuke nine, dogbert17: idle curiosity, but how long does stage parse take for the jvm rakudo build with your ryzens? 17:09
200s for me 17:13
18:00 camelia left 18:02 bartolin_ joined 18:03 jsimonet1 joined 18:04 bartolin left, camelia joined, mst__ joined, mst left, mst__ is now known as mst, mst left, mst joined, ChanServ sets mode: +o mst 18:35 zakharyas left 18:37 zakharyas joined 18:38 zakharyas left 18:40 zakharyas joined
nine MasterDuke: I've been too impatient to build on JVM for a very long time 18:45
MasterDuke yeah, i can't do it regularly 19:00
19:10 zakharyas left, zakharyas1 joined 19:12 zakharyas joined 19:14 zakharyas2 joined, zakharyas1 left 19:17 zakharyas left 19:19 domidumont left 19:23 zakharyas2 left 19:27 lizmat left 19:32 zakharyas joined 19:37 zakharyas left 19:38 zakharyas joined 19:49 lizmat joined 20:30 Kaiepi left, Kaiepi joined 20:35 ilmari[m] joined 21:14 wictory[m] joined, AlexDaniel`` joined 21:28 Kaiepi left, Kaiepi joined 22:04 zakharyas left 23:46 robertle left