github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
02:33 lizmat left 05:03 squashable6 joined 05:56 Zoffix joined
Zoffix New blog post: "The Missing Contributors of Perl 6": rakudo.party/post/The-Missing-Cont...s-of-Perl6 05:56
06:05 Zoffix left 06:33 brrt joined 06:44 robertle joined 07:05 brrt left 07:18 domidumont joined 07:21 zakharyas joined 07:25 domidumont left, domidumont joined 07:45 lizmat joined 08:11 brrt joined 08:27 brrt left 08:29 brrt joined 08:45 brrt left 08:51 zakharyas left 08:52 zakharyas joined 09:18 brrt joined
jnthn D'oh, one can get spesh dump to crash because it assumes it can look up the filename string index in the comp unit of the thing the top-level graph is for, but of course it might be inlined code from a totally different CU 09:51
Now I'm wondering if the profiler either solves this or trips over this. :)
Geth MoarVM/inline-unspecialized: 24d3b5bf2f | (Jonathan Worthington)++ | src/spesh/dump.c
Fix dump of inlined spesh line/file annotations

We did the string index lookup on the wrong CU, which could crash the dumper.
10:12
MoarVM/inline-unspecialized: a935d00e71 | (Jonathan Worthington)++ | src/spesh/optimize.h
Better document MAX_ARGS_FOR_OPT
10:18
MoarVM/inline-unspecialized: 5ef61a7663 | (Jonathan Worthington)++ | src/spesh/args.c
When inlining unspecialized, set arg type facts

So that we at least can do useful optimizations based upon those.
10:31
jnthn I think that branch is mostly good now 10:33
brrt \o/ 10:40
by the way, if new statistics come in for the inlinees (does that still happen?), will they be replaced? 10:41
jnthn Not at the moment, no
brrt hmm. 10:42
jnthn Well, doesn't happen, nor will they be replaced
brrt because, once speshed, the logging instructions will be removed..
jnthn Right :)
brrt :-) 10:43
10:51 zakharyas left
jnthn huh, why on earth and I getting an empty spesh log 10:51
It only comes out empty if I set an MVM_SPESH_LIMIT :S 10:52
How would that change anything...
Oh...huh, it now only dumps the limited frame...in theory 10:54
But in reality it's dumping nothing
10:57 zakharyas joined
jnthn It gets stranger. 11:05
Also the error is 11:06
At Frame 12, Instruction 14, op 'trunc_i8', operand 0, MAST::Local of wrong type (17) specified; expected 1
Which looks a lot like the native.t or whatever it was failure that nwc10 reported the other day 11:07
Which is making me suspect this isn't to do with my branch
brrt no, that is very probable
I / we broke something and i've yet to figure out what
jnthn Yeah, it seems very action-at-a-distance-y 11:08
brrt try if it breaks under MVM_JIT_DISABLE 11:09
jnthn MVM_SPESH_BLOCKING=1 MVM_SPESH_NODELAY=1 ./perl6-m -Ilib t/spec/S12-construction/named-params-in-BUILD.t
That reliably fails
With MVM_JIT_DISABLE=1 it reliably works
With MVM_JIT_EXPR_DISABLE=1 it...huh, worked once, but mostly fails 11:10
So yeah, it seems JIT-y 11:11
brrt hmm :-( 11:13
jnthn My gut instinct given the action at a distance is also memory corruption-y
Oh
Or deot
*deopt
brrt well, that one works for me, unfortunatley
jnthn If it's placing the interpreter back in a bogus place
brrt possibly, but why would that happen 11:14
jnthn No idea
t/spec/S02-types/native.rakudo.moar fails in a similar way, which is the one I think you noticed
And also works with MVM_JIT_DISABLE=1 11:15
brrt yeah. I jit-bisected that and it points to 'new'
:-(
11:19 zakharyas left
jnthn lunch; bbiab 11:20
master spectest looks pretty alright 12:12
Modulo the heisenfail of the native test
So I figure I can merge
Better it gets some testing :)
brrt i can make the native test replicate btw 12:13
doesn't really tell me what's going wrong, but I can replicate it...
Geth MoarVM/master: 12 commits pushed by (Jonathan Worthington)++
review: github.com/MoarVM/MoarVM/compare/a...f61a7663c9
12:22
jnthn 9 files changed, 265 insertions(+), 102 deletions(-)
Quite a small additional amount of code, especially when it also corrected 3 other issues along with the main goal of the branch :) 12:23
12:29 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'When inlining unspecialized, set arg type facts 12:29
travis-ci.org/MoarVM/MoarVM/builds/400410421 github.com/MoarVM/MoarVM/compare/a...f61a7663c9
12:29 travis-ci left
jnthn bah, "apt-get install failed" 12:31
12:36 zakharyas joined
jnthn Very strange...two things that show up fine in the spesh log and the jit log show up in the profile as not running specialized or JITted. And it's slow enough to make me thing that's true. 12:37
tadzik E: Unable to locate package failed 12:38
:(
jnthn :P
12:40 lizmat left 12:44 lizmat joined 12:46 brrt left 12:47 zakharyas left 12:50 lizmat left 12:53 lizmat joined 13:05 brrt joined 13:18 zakharyas joined 13:53 brrt left
jnthn Phew, I think I finally found a way to write AT-POS that brings it below the inline limit 14:19
nwc10 this statement is interesting. feels like it would turn into a useful short(ish) (for some value of "short") blog post 14:33
1) what is the inline limit, why is it necessary, what goes horribly wrong if we don't have one?
2) what's the way to write AT-POS that isn't short enough
I apologise for suggesting work (And a distraction from the real work) to someone else 14:34
and I can't send you useful beer
14:35 brrt joined 14:41 zakharyas left 15:08 domidumont left
brrt comments welcome: brrt-to-the-future.blogspot.com/b/...;type=POST 15:16
timotimo MFW the URL is just the article text compressed and encoded as base64 15:18
why does blogger have a "clicktrap" element over the page 15:19
i have this unreasonable need to click around and mark words and paragraphs and not being able to do it, even though it serves no obvious purpose, makes it feel Just Wrong
brrt haha 15:20
timotimo the paragraph above the second numbered list has left-overs from an earlier version of the sentence i think
15:20 lizmat left
timotimo "but for various reasons, partially historical, we call For communicating with the " 15:20
15:23 lizmat joined
brrt thank you, fixed 15:24
lizmat brrt: s/they usually to a system/they usually refer to a system/ 15:25
timotimo looks good. you want to make it perl 6 or Perl 6 throughout the whole text
jnthn brrt: My name is typo'd 15:27
brrt where?
jnthn At the Swiss Perl Workshop ...
why on earth can't I copy-paste from this?
lizmat brrt: also try to use non breaking space between Perl and the number
brrt oh, because blogger is evil
jnthn: seen, fixed 15:28
timotimo jnthn: inspect element on the "Preview" badge on the top left, find the "clicktrap" element one or two further up, and "delete element"
lizmat brrt: s/Jonathand/Jonathan/ 15:29
timotimo moarvm got thoroughly jonathan'd
Geth MoarVM: 76b4f4ce79 | (Jonathan Worthington)++ | src/spesh/inline.c
Inline limit with original bytecode size too

This means that if we have a small piece of code that could be inlined, and then we inline something in to that, we can still inline the top piece of code too. This helps us do a bit more multi-level inlining.
timotimo does that mean that if we have tiny routine bodies with a deep call chain they'd all be inlined as long as the individual routines are all small enough? 15:31
brrt lizmat: fixed, thanks
jnthn timotimo: Yes, though could happen. 15:33
timotimo: Though usually something does a decent amount of work somewhere :)
timotimo mhm 15:35
15:36 travis-ci joined
travis-ci MoarVM build errored. Jonathan Worthington 'Inline limit with original bytecode size too 15:36
travis-ci.org/MoarVM/MoarVM/builds/400492904 github.com/MoarVM/MoarVM/compare/5...b4f4ce7999
15:36 travis-ci left
jnthn E: There were unauthenticated packages and -y was used without --allow-unauthenticated 15:36
grr
15:49 zakharyas joined 15:58 dogbert17 joined
dogbert17 brrt: my git fu is far from optimal but it seems that the strange jit error, as seen in /spec/S02-types/native.rakudo.moar, was introduced by github.com/MoarVM/MoarVM/commit/35...29e6992760 16:00
can that be possible?
timotimo it's always possible that one op being introduced causes an op that is sometimes problematic to appear in a spot that triggers the problem 16:01
dogbert17 timotimo: I did this 'bisection' in the most incorrect way, I manually checked out versions and tested until the problem disappeared, which it did with github.com/MoarVM/MoarVM/commit/66...0ffabb594f 16:03
timotimo that's fair 16:04
you can now use the jit bisect tool on top of the git bisect
that may find us the exact miscompilation
brrt don't horrify me
timotimo :-P 16:05
anyway.... I'll revert, then try if that helps
timotimo how do you mean?
brrt jit-bisect on git-bisect, i'm not sure that will work very well very often 16:06
timotimo oh no i meant use jit-bisect after git bisect is finished
brrt oh, i see
i mean to say, jit-bisect.pl isn't probably that reliable / good of a tool :-) 16:08
Geth MoarVM: 29cc327f87 | (Bart Wiegmans)++ | 2 files
Revert "Implement JIT templates for 10 ops"

This reverts commit 354c62bdca1be082b61939fdcf6a4129e6992760.
16:10
timotimo gu 16:14
dogbert17 brrt++, that seems to have done the trick 16:16
16:18 travis-ci joined
travis-ci MoarVM build errored. Bart Wiegmans 'Revert "Implement JIT templates for 10 ops" 16:18
travis-ci.org/MoarVM/MoarVM/builds/400510053 github.com/MoarVM/MoarVM/compare/7...cc327f87c9
16:18 travis-ci left
brrt what, segmentation fault 16:20
dogbert17 when 16:21
brrt during rakudo build 16:24
dogbert17 oops
brrt yeah 16:25
16:37 dogbert17 left 16:39 stmuk_ joined 16:40 stmuk left 16:41 dogbert17 joined
brrt in a weird twist of fate, it seems it's the no-jit version that's broken 16:48
null pointer in a repr shift_o 16:49
wtf
it *is* spesh though
OSR and inlining dependent :-( 16:55
17:07 zakharyas left 17:08 zakharyas joined 17:16 brrt left
jnthn Uff, deopt is indeed a tricky thing 17:18
jnthn had an idea for keeping a bit less stuff around for deopt, tried it, and discovered it's flawed
Think I can salvage one smaller improvement from the effort, though 17:25
jnthn goes to rest a bit 17:32
samcv well i've got randomizing the order of the bucket iteration figured out 17:37
as we do now we go from 0..7 say if we have 8 buckets. but we XOR that with a random integer 17:38
so 0 XOR 3 = 3; 1 XOR 3 = 2; 2 XOR 3 = 1 etc
and so you get all of the numbers but in a different order 17:39
Geth MoarVM: 0eb25300bb | (Samantha McVey)++ | src/strings/parse_num.c
Make parse_simple_number impossible to reach end without returning

Make sure that it's not possible to reach the end of the function without returning or throwing. This fixes a compiler warning about this.
Also change the comments from // style to /* */ which is MoarVM's recommended style.
Make an if else chain into a switch for greater clairity.
Remove some else's that were unneeded.
18:12
MoarVM: 4bde02e3b5 | (Samantha McVey)++ | 3 files
Make sure we don't try and return values from void functions

I had added MVMHash_at_key, MVMHash_bind_key, MVM_P6opaque_at_pos and MVM_VMArray_at_pos but had accidently used `return`, which is not needed since it is a void function and returning void is meaningless.
18:20 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Make sure we don't try and return values from void functions 18:20
travis-ci.org/MoarVM/MoarVM/builds/400555407 github.com/MoarVM/MoarVM/compare/2...de02e3b58a
18:20 travis-ci left
AlexDaniel squashable6: next 18:26
squashable6 AlexDaniel, āš šŸ• Next SQUASHathon in ā‰ˆ15 hours (2018-07-07 UTC-12āŒUTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
Geth MoarVM: 3ef2acf0f3 | (Samantha McVey)++ | 13 files
Hash: randomize insertion order and bucket iteration order

The effect of this commit results in every hash having a different iteration order. Previously, if you created two hashes and added items in the same order, you would get the same iteration order.
Now we hash the table's pointer and use this as a pseudo random value to ... (14 more lines)
19:03
MoarVM: 485d063a7b | (Samantha McVey)++ | .travis.yml
Use the trusty not the precise llvm repos

Travis is using trusty now and the precise repo has an outdated key, causing Travis CI to fail.
19:10
19:12 zakharyas left 19:17 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Use the trusty not the precise llvm repos 19:17
travis-ci.org/MoarVM/MoarVM/builds/400576375 github.com/MoarVM/MoarVM/compare/3...5d063a7bfb
19:17 travis-ci left 19:31 robertle_ joined
dogbert17 what could this be: ===SORRY!=== Cannot call method 'optimize' on a null object 20:15
samcv dogbert17: hmm, not sure 20:23
dogbert17 samcv: I get it when running: ./perl6 t/spec/S26-documentation/07-tables.t 20:25
20:26 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Try and get clang installing' 20:26
travis-ci.org/samcv/MoarVM/builds/400601243 github.com/samcv/MoarVM/compare/04...f421a8999e
20:26 travis-ci left 20:32 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Looks like trusty already has clang 5 so try to not install it' 20:32
travis-ci.org/samcv/MoarVM/builds/400602386 github.com/samcv/MoarVM/compare/d2...e415b13bc2
20:32 travis-ci left 20:36 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Clang doesn't have a versioned binary so allow that' 20:36
travis-ci.org/samcv/MoarVM/builds/400605181 github.com/samcv/MoarVM/compare/b3...7118404699
20:36 travis-ci left
MasterDuke jnthn: is it intentional that not all the enum cases are handled in this switch? github.com/MoarVM/MoarVM/blob/mast...#L534-L539 20:45
21:16 travis-ci joined
travis-ci MoarVM build errored. Samantha McVey 'Try adding llvm and clang to packages list' 21:16
travis-ci.org/samcv/MoarVM/builds/400619244 github.com/samcv/MoarVM/compare/4a...683f3963c8
21:16 travis-ci left
jnthn MasterDuke: Yes, not all of them have anything to mark; see github.com/MoarVM/MoarVM/blob/mast...uard.h#L72 21:24
MasterDuke jnthn: i assumed so, but clang warns about it. wonder if there's a way to mark that instance as intentional? 21:28
jnthn Dunno. Guess that's what I get for using enums and not defines :P 21:29
MasterDuke it also complains about a couple cases like `if (flags || g->facts[i][j].dead_writer || g->facts[i][j].writer && g->facts[i][j].writer->info->opcode == MVM_SSA_PHI) {`, where it wants parens around the && expression 21:31
any opposition to adding the parens in that case (and a couple similar) to silence the warning? 21:32
jnthn Not really, just don't expect me to wite them in the first place. :) 21:34
I consider it as obvious as + and *
But I figure others don't. :)
21:35 travis-ci joined
travis-ci MoarVM build failed. Samantha McVey 'Just try removing the lines' 21:35
travis-ci.org/samcv/MoarVM/builds/400624886 github.com/samcv/MoarVM/compare/55...a8d2efa417
21:35 travis-ci left
MasterDuke heh, cool 21:35
jnthn: also, did you see my question at colabti.org/irclogger/irclogger_log...07-04#l129 ? 21:36
jnthn MasterDuke: Yes, then promptly forgot. I set it up on a server I have and don't know why it stopped working. 21:52
So I guess I'd have to look at why, though it was also a total hack.
MasterDuke jnthn: you were using github.com/japhb/perl6-bench ? 21:53
jnthn Yes
MasterDuke ah, then you'll need to update it
21:54 dalek joined, synopsebot_ joined, p6lert joined, Geth joined
jnthn Yeah, will see if I can find time look in the next couple of days 21:55
Geth MoarVM: f93d47ebf8 | (Samantha McVey)++ | .travis.yml
Use the llvm 5.0 toolchain deb line

The non versioned url doesn't have llvm 5.0
21:57 SourceBaby joined
Geth MoarVM: 8733b8bdae | (Samantha McVey)++ | .travis.yml
Get Travis working again by making sure clang is located right
21:58
MoarVM: MasterDuke17++ created pull request #895:
Remove useless conditional
MoarVM: cc268bbcfd | MasterDuke17++ (committed using GitHub Web editor) | src/core/coerce.c
Remove useless conditional

  `i` is an `MVMuint64`, so it will always be >= 0.
22:02
MoarVM: 68abd3aaf9 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/coerce.c
Merge pull request #895 from MasterDuke17/patch-1

Remove useless conditional
22:03 Kaiepi left 22:20 travis-ci joined
travis-ci MoarVM build failed. Zoffix Znet 'Merge pull request #895 from MasterDuke17/patch-1 22:21
travis-ci.org/MoarVM/MoarVM/builds/400638595 github.com/MoarVM/MoarVM/compare/8...abd3aaf968
22:21 travis-ci left
jnthn hmm, --no-jit ain't happy 22:26
Guess I'll have a look into that tomorrow 22:30
22:30 Kaiepi joined 22:36 brrt joined
brrt MVM_SPESH_NODELAY + MVM_SPESH_BLOCKING + optimize=0 makes perl6 a bit slower 22:37
anyway, I have a fix for the issues the native type JIT issues 22:38
it was load sizes :-)
jnthn Hurrah :)
brrt++
I suspect the --no-jit mode breakage is one of my recent changes, though I've no idea which one. Will have to hunt that tmorrow. 22:39
I thought I might have figured out a quick win for deopt stuff earlier today, but it turns out not. 22:40
Well, actually, I did realize a few things
Geth MoarVM: 434e4950a7 | (Ben Davies)++ (committed by Bart Wiegmans) | 2 files
Implement JIT templates for 10 ops

Adds JIT support for the following ops:
  - isinvokable
  - getlexreldyn
  - objprimunsigned
  - scgethandle
... (9 more lines)
brrt what did you learn?
jnthn That you can't just use "where do we have things that actually deopt" before doing dead instruction elimination to decide what to keep
Since if we deleted entire basic blocks, the instructions doing the using of stuff will be long gone 22:42
But we delete basic blocks early to make PHI nodes shrink to, if we're lucky, a non-merge
And we'd not want to lose that 22:43
brrt uhuh
jnthn It's not yet clear to me if the approach is entirely flawed or if it is salvageable by keeping information around about what deleted basic blocks used
brrt hmmm 22:44
jnthn I did realize along the way that we should probably separate out "kept alive for deopt" and out from usages though.
brrt i'm a bit too tired to give useful commentary :-) 22:45
but i guess that makes sense
jnthn For one so we can understand that's what's going on in the spesh log, but also it means that if we optimize something to the point where it has zero possible points of deopt, we can just toss them all
And for deopt-free inlinees, we can drop our reluctance to go optimizing those too 22:46
brrt uhuh
jnthn Also, I'll probably need to re-work the `set` instruction elimination at some point soon too
It screws the SSA form utterly
brrt night 22:47
jnthn 'night o/ 22:49
22:52 brrt left
samcv hmm --no-jit is broken in travis 22:52
anyway, time to sleep
jnthn samcv: Yeah, I'm suspsecting mea culpa, but...yes, sleep indeed :) 22:54
MasterDuke jnthn: fwiw, some gdb and valgrind output of the segfault with --no-jit gist.github.com/MasterDuke17/7fd92...4ffb7bc036
jnthn That doesn't look fun 23:00