github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:30 patrickb left 01:12 jnthn left 01:22 lizmat joined 03:33 squashable6 left 03:35 squashable6 joined 04:55 AlexDaniel left 05:08 AlexDaniel joined, AlexDaniel left, AlexDaniel joined 06:05 robertle left 06:15 sena_kun joined 06:58 sena_kun left 07:06 squashable6 left, domidumont joined 07:08 squashable6 joined 08:10 tellable6 joined, evalable6 joined 08:25 sena_kun joined
nine vrurg: precomp files are MoarVM bytecode files with a header that's ended by an empty line. Cut that off so the file starts with "MOARVM". Then use either moar --dump or gist.github.com/niner/63a718023aba...c1ccd84e32 08:26
08:52 sena_kun left 10:17 jnthn joined 10:37 sena_kun joined
nwc10 good *, jnthn 11:08
jnthn o/ 11:10
11:20 domidumont left 11:29 sena_kun left 12:44 domidumont joined 13:00 lucasb joined 13:09 patrickb joined
Guest13443 releasable: next 13:28
releasable6 Guest13443, Next release will happen when it's ready. There are no known blockers. 248 out of 463 commits logged (⚠ 9 warnings)
Guest13443, Details: gist.github.com/95bc5cb30010a790c8...6a371f0c16
13:59 sena_kun joined
vrurg nine: thanks! 14:18
15:29 Altai-man_ joined 15:31 sena_kun left 15:42 brrt joined
vrurg nine: I have located the source of problem. Any comments on github.com/rakudo/rakudo/issues/30...550367834, if possible? 15:44
And just anybody's comments on that link are very welcome, please!
15:54 patrickb left 16:12 brrt left 17:16 MasterDuke joined 17:32 Altai-man_ left
dogbert17 .seen timotimo 17:57
tellable6 dogbert17, I saw timotimo 2019-11-05T22:06:16Z in #raku: <timotimo> and it's extremely annoying
17:59 lucasb left 18:19 robertle joined 18:55 domidumont left
nine vrurg: just to let you know: I'm currently on vacation in New Zealand, hence won't be able to help much for 2 more weeks 18:56
vrurg nine: I see. Have a great vacation! 18:57
nine thanks :)
nwc10 have fun. We might even manage an IO release before you get back. 18:58
mosh++ # helpful
vrurg nine: I think my solution is the only way anyway. It just might take longer to implement without some guidance. 18:59
20:29 brrt joined
dogbert17 brrt: is src/jit/x64/tiles.dasc an important file? 20:42
brrt yes 20:45
why
dogbert17 don't remember if I have asked this before but I'm wondering about github.com/MoarVM/MoarVM/blob/mast....dasc#L386 20:46
is the missing break intentional?
brrt oh, no, isn't 20:48
MasterDuke brrt: btw, did you see my comment in #raku-dev earlier? 20:52
brrt did not 21:16
MasterDuke split($sep, $string) github.com/rakudo/rakudo/blob/mast...1566-L1624 isn't being jitted because of param_on_o. re github.com/rakudo/rakudo/issues/3281 21:18
Geth MoarVM: a26d7fff81 | (Bart Wiegmans)++ | src/jit/x64/tiles.dasc
[JIT] Add missing break

  Thanks dogbert17++
brrt that's a ridiculously complex method, though 21:19
MasterDuke true, something else might cause a different problem even if param_on_o is jitted. but those param_* ops just keep showing up 21:21
brrt question is, why can't we spesh it 21:22
to sp_getarg_o
MasterDuke does seem like there's something weird going on. lots of hits, but 'No interned callsite' keeps showing up for that split multi in the spesh log 21:23
brrt I think that's the thing to trace
MasterDuke and then it does a certain specialization, not a typed one
not sure i can help there
brrt hmm 21:24
thanks for the pointer at any rate
MasterDuke or, i may be able to do some debugging if told what to do, but i don't know enough to do it myself in any reasonable about of time
brrt I'm not exactly an expert on that part myself 21:27
MasterDuke the only other complaint/warning in the 'after' version of that split multi is 'expr bail: Cannot get template for: prepargs'
jnthn MasterDuke: The thing to look into is why the param_on_o is being left behind
MasterDuke is the `;;` in the method signature a problem? 21:28
jnthn Oh, but if there's no interned callsite...well, I'd look at why that is.
No, unlikely
Is something passing the args via flattening? If so, that's the problem.
MasterDuke ` @items=split("\t",$line);` is the code 21:29
any suggestion as to where/what for no interning debugging?
brrt if that golfs the failure to spesh, that's surely interesting 21:33
21:36 patrickb joined
jnthn That looks like a very simple call, but are you sure it's not something that just delegates to a method? 21:36
MasterDuke a spesh log of `my $a = ((^10).join("\t") ~ "\n") x 100_000; my @b; for $a.lines -> $line { @b = split("\t", $line) }; say @b` shows the same thing
jnthn And in that case is it the method not being specialized so well?
e.g. if it's like sub split($a, $b, *%opts) { $b.split($a, $b, |%opts) or something that'd not do so well 21:37
MasterDuke hm, `my $a = ((^10).join("\t") ~ "\n") x 100_000; my @b; for $a.lines -> $line { @b = $line.split("\t") }; say @b` does show that multi as interned 21:38
src/core.c/Cool.pm6:495:multi sub split($pat, Cool:D $target, |c) { $target.split($pat, |c) }
jnthn Aha 21:39
Yes, that |c
Don't do that :)
If it's a multi, you can rewrite it as one variant taking extra args and one not
And get an instant huge win :)
MasterDuke rebuilding now... 21:40
before: "The profiled code ran for 4927.36ms." 21:43
after: "The profiled code ran for 983.25ms."
down to only 6x slower than perl 5 21:45
oh wait, let me confirm those 21:46
21:47 MasterDuke left 21:48 MasterDuke joined
MasterDuke ugh, don't know why the connection here drops me all the time 21:49
but yeah, not the right numbers
before was correct, but not the after
after: "The profiled code ran for 4702.89ms."
so not a massive difference. but now the split multi method is being jitted 21:50
21:55 colomon joined 22:01 ggoebel left
MasterDuke hm. but adding that new multi causes `Unexpected named argument 'v' passed` if you do `split("\t", $line, :v)` 22:09
adding `is default` to the |c multi doesn't help, nor does removing the ';;' from the multi method's signature 22:17
22:18 sena_kun joined 22:56 sena_kun left 23:18 brrt left
jnthn Try making it *%h instead of |c 23:27
MasterDuke Ambiguous call to 'split(Str, Str, :v)'; these signatures all match::($pat, Cool:D $target):($pat, Cool:D $target, *%h) 23:39
i'll try an `is default` again
jnthn Oh, hang on, where is the ;; ?
MasterDuke in the method 23:40
jnthn ah, OK, so not relevant here
vrurg MasterDuke: do I get it correctly that you need dispatching by the named parameter? 23:46
MasterDuke well, those errors disappear, but 'no interned callsites' again (and a fail in t/02-rakudo/12-proto-arity-count.t, but that might not be that big a deal)
vrurg: yeah, i guess that's the problem 23:47
vrurg nqp or raku?
Ah, multi. pardon
MasterDuke that was with the 'is default' on the *%h multi
vrurg MasterDuke: in Red a fixed a similar situation with explicit `where *.defined` for a named parameter. 23:49
jnthn MasterDuke: I guess the other option is just to write the multi like `c ?? $b.split($a, |c) !! $b.split($a)` :-)
MasterDuke vrurg: but `where`s are slow
timotimo not all wheres 23:50
tellable6 hey timotimo, you have a message: gist.github.com/8b39752d5c0d931c90...56e04e7089
vrurg That was a special case... What about `:$v!`?
23:51 patrickb left
MasterDuke timotimo: what where's aren't? 23:52
(ugh, one too many ')
timotimo don't remember exactly, but some are optimized down to skip invocations 23:54
probably stuff like "where 1" or "where Str" 23:55