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 |