github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
00:49
lizmat left
01:08
lizmat joined,
p6bannerbot sets mode: +v lizmat
01:16
fake_space_whale joined
01:17
p6bannerbot sets mode: +v fake_space_whale
03:53
evalable6 left,
evalable6 joined
03:54
p6bannerbot sets mode: +v evalable6
04:35
lizmat left
04:39
lizmat joined,
p6bannerbot sets mode: +v lizmat
04:43
lizmat left
04:54
fake_space_whale left
05:09
fake_space_whale joined,
p6bannerbot sets mode: +v fake_space_whale
05:50
fake_space_whale left
06:01
MasterDuke left
06:27
ItchyPlant joined,
p6bannerbot sets mode: +v ItchyPlant
10:50
lizmat joined,
p6bannerbot sets mode: +v lizmat
|
|||
nine | Oh, we don't yet JIT any named arguments except required strings? I.e. most constructors won't be JIT compiled. I wonder why this hasn't come up as kind of low hanging fruit | 12:09 | |
timotimo | if the callsite is known, named arguments become positional arguments | 12:12 | |
a very nice optimization | 12:13 | ||
12:14
ggoebel joined
12:15
p6bannerbot sets mode: +v ggoebel
|
|||
nine | But that doesn't always work apparently | 13:06 | |
jnthn | It won't work when the callsite has flattening | 13:07 | |
nine | The callsite looked like this: nqp::push(@!buffer-stack, SubBuffer.new( :bytecode($!bytecode), :outer-annotations-start($!annotations-offset), :annotations-offset(nqp::elems($!annotations)), :label-fixups(@!child-label-fixups), :labels(%!labels), :handlers(@!handlers), :level($sublevel++),)); | 13:11 | |
13:11
MasterDuke joined,
p6bannerbot sets mode: +v MasterDuke
|
|||
nine | Yet the callsite was not interned according to the spesh log and the constructor not JIT compiled because of a param_on_o | 13:11 | |
13:11
MasterDuke left,
MasterDuke joined,
herbert.freenode.net sets mode: +v MasterDuke,
p6bannerbot sets mode: +v MasterDuke
|
|||
nine | Changed it to positionals and it's much faster now | 13:12 | |
jnthn | Wonder if it's too big to intern | 13:18 | |
There's some size limit, maybe that wants a boost | |||
nine | INTERN_ARITY_LIMIT is 8. If named args count as 2 the callsite is far above the limit | 13:37 | |
jnthn | Could try increasing it :) | 13:38 | |
And yeah, I think they could for 2 still | |||
nine | There's also MAX_ARGS_FOR_OPT which is 8, too | 13:39 | |
14:08
MasterDuke left
14:27
ItchyPlant left
15:08
ItchyPlant joined,
p6bannerbot sets mode: +v ItchyPlant
|
|||
ItchyPlant | Hi, what is the way to test MoarVM alone (without NQP/Rakudo) if that is fully functional itself? On AIX, I get the "Duplicate symbol: .__init_aix_libgcc_cxa_atexit" at the end of compilation. make install can be done, so... I would like to make sure if at least that part is OK. | 15:09 | |
timotimo | currently we rely on nqp's test suite for testing | 15:11 | |
ItchyPlant | aha, ok | 15:16 | |
so these two rows tells us it has critical issues? | 15:17 | ||
t/nqp/111-spawnprocasync.t ............. Dubious, test returned -1 (wstat 6, 0x6) Failed 4/4 subtests | |||
t/nqp/113-run-command.t ................ Dubious, test returned -1 (wstat 6, 0x6) Failed 2/8 subtests | 15:18 | ||
timotimo | yeah, feel free to run them directly with ./nqp-m to see where and how it dies | 15:19 | |
ItchyPlant | NQP also can be "make install"-ed despite these errors but... | ||
OK, I will run them separately | 15:20 | ||
15:35
fake_space_whale joined
15:36
p6bannerbot sets mode: +v fake_space_whale
|
|||
ItchyPlant | t/nqp/111-spawnprocasync.t ............. 1..4 Dubious, test returned -1 (wstat 6, 0x6) Failed 4/4 subtests | 15:49 | |
t/nqp/113-run-command.t ................ 1..8 ok 1 - got the correct output from stdout ok 2 - got the correct output from stderr Dubious, test returned -1 (wstat 6, 0x6) Failed 6/8 subtests | 15:50 | ||
t/nqp/114-pod-panic.t .................. 1..1 Dubious, test returned -1 (wstat 6, 0x6) Failed 1/1 subtests | |||
got these three in verbose mode (modified it in Makefile). However, I didn't figure out how to run them separately. :) | 15:51 | ||
nine | ItchyPlant: ./nqp-m t/nqp/111.spawnprocasync.t | ||
ItchyPlant | Ok, thanks | 15:52 | |
1..4 ok 1 - called the ready callback once ok 2 - got the correct output on stdout ok 3 - called the ready callback once ok 4 - got the correct output on stderr | |||
# ./nqp-m t/nqp/113-run-command.t 1..8 ok 1 - got the correct output from stdout ok 2 - got the correct output from stderr ok 3 - got the correct output from stdout ok 4 - got the correct output from stderr ok 5 - got the correct output from stdout ok 6 - got the correct output from stderr ok 7 - got the correct output from stdout ok 8 - got the correct output from stderr | 15:53 | ||
# ./nqp-m t/nqp/114-pod-panic.t 1..1 ok 1 - got the correct output from stderr | 15:54 | ||
so these all look like OK (?) | |||
nine | looks like, yes | ||
ItchyPlant | so does it mean MoarVM is fine at its installed location and NQP may be make install-ed too? | 15:55 | |
nine | I'd guess the failures are just some weird interaction between nqp's async execution of binaries and the prove command (Perl's test harness) | 15:56 | |
nine wouldn't waste too much time on it right now | |||
ItchyPlant | OK, thanks for now :) | 15:58 | |
so only Rakudo's compilation is bad (as it crashes either by segfault or by not enough allocated memory or by illegal instruction | 16:00 | ||
) | |||
it does it when it reaches this point (you probably well aware of it): | 16:01 | ||
The following step can take a long time, please be patient. /opt/rakudo/bin/moar --libpath="blib" --libpath="/opt/rakudo/share/nqp/lib" --libpath="/opt/rakudo/share/nqp/lib" perl6.moarvm --nqp-lib=blib --setting=NULL --ll-exception --optimize=3 --target=mbc --stagestats --output=CORE.setting.moarvm gen/moar/CORE.setting Stage start : 0.000 Stage parse : make: *** | |||
but now I'm leaving for now... I will check in later (will also check logs if something came to anyone's mind) | 16:02 | ||
thank you again :) bye | |||
nine | The only real special thing about this step is that it compiles a huge amount of code thereby exercising most of the compiler a lot | ||
ItchyPlant | but it compiles with moarvm only, right? no gcc is involved here... or am I wrong? | 16:03 | |
16:04
ItchyPlant left
|
|||
timotimo | gcc is also involved in an earlier step | 16:04 | |
to compile a few "extops" we call them | |||
16:34
MasterDuke joined,
p6bannerbot sets mode: +v MasterDuke,
MasterDuke left,
MasterDuke joined,
herbert.freenode.net sets mode: +v MasterDuke,
p6bannerbot sets mode: +v MasterDuke
17:00
zakharyas joined
17:01
p6bannerbot sets mode: +v zakharyas
17:27
zakharyas left
17:38
lizmat left
17:39
lizmat joined,
p6bannerbot sets mode: +v lizmat
17:44
lizmat left
|
|||
nine | I just noticed that our decision of whether to inline a frame is based on the original frame's bytecode size. But that size may be totally dominated by argument handling. E.g. method write_uint32_at(uint32 $i, uint32 $pos) { nqp::writeuint(self, $pos, $i, 4); } is too large to inline! | 17:45 | |
timotimo | really? wow | 17:46 | |
can you post the before/after of an instance of that? | |||
is it because of lots of truncate and extend overhead? | |||
Geth | MoarVM: b2e870c6ff | (Aleks-Daniel Jakimenko-Aleksejev)++ | 10 files Revert async socket introspection Revert "Implement async socket introspection functions" This reverts commit e1eb9af30ad7a1d64b62ff989695b10190cf8426. Revert "Implement asyncsocket op" This reverts commit caf23c6bc449969f6042d7ef6b2f080e6c118c70. |
17:49 | |
17:50
fake_space_whale left
17:53
ItchyPlant joined,
p6bannerbot sets mode: +v ItchyPlant
|
|||
nine | timotimo: gist.github.com/niner/39675e602f7a...3e21382967 | 17:53 | |
ItchyPlant | This step causes the segfault/illegal operation crash: | 17:55 | |
nine | Oh, there's also this: Can NOT inline read_uint32_at (6) with bytecode size 70 into insert_bytecode (72): target has a :noinline instruction | 17:56 | |
timotimo | why does it have paramnamesused in the "after" part? | 17:57 | |
nine | what does that do anyway? | ||
17:58
Kaiepi left
|
|||
MasterDuke | ItchyPlant: is valgrind available on AIX? if so, you could run the moar command with it and maybe get some useful info | 17:58 | |
timotimo | it asserts that all nameds have been used | ||
17:59
Kaiepi joined
|
|||
timotimo | however, it only ever does anything if the args num is != the pos num | 17:59 | |
17:59
p6bannerbot sets mode: +v Kaiepi
|
|||
timotimo | and from the callsite it looks like both are "2"? | 17:59 | |
nine | Yes, it's uint32 $i, uint32 $pos | 18:00 | |
timotimo | you may figure this out by stepping through args.c's MVM_spesh_args | 18:01 | |
nine | Err.... it's read_uint32_at, so the args are self and $pos | ||
That's method read_uint32_at(uint32 $pos) { nqp::readuint(self, $pos, 4) } | 18:02 | ||
timotimo | right | ||
nine | The only ops with a :noinline in read_uint32_at seem to be param_rp_o, param_rp_u and paramnamesused which should not count as they will not be inlined. | 18:04 | |
timotimo | aha | ||
it won't reach paramnamesused for arg spesh because it stumbles over param_rp_u | |||
param_rp_u is in the block with "don't understand how to specialize these yet" | 18:05 | ||
so even post-spesh it's doing the expensive kind of argument getting | |||
nine | Oh god damnit, another sign of our lacking support for unsigneds? | ||
timotimo | yep | ||
nine | Whatever else will come out of my endeavours here, better support for uint is definitely in there | 18:06 | |
timotimo | for sure | ||
nine | I wonder if all that's needed is moving that case up | 18:08 | |
uints are after all not _that_ different from ints | |||
timotimo | i'm not sure i understand why it does trunc_u32, then extend_u32 | ||
and coerce_iu the const_i64_16 is a special kind of funny | 18:09 | ||
nine | I moved the cases up, but the result is the same. At least there's nothing broken either | 18:13 | |
Ah, there's some more handling needed | 18:14 | ||
Looks like a nice job for tomorrow | 18:16 | ||
18:42
zakharyas joined
18:43
p6bannerbot sets mode: +v zakharyas
19:11
robertle left
|
|||
AlexDaniel | samcv: by any chance do you know why this happens sometimes? ci.appveyor.com/project/rakudo/rak...8v46#L1188 | 19:36 | |
aaah nevermind | |||
samcv | AlexDaniel: is it only windows? | ||
AlexDaniel | these are just TODOs and I'm blind | ||
t\08-performance\99-misc.t is likely just a flapper so that's why | 19:37 | ||
samcv | timotimo: make heap snapshot profiler functional again | ||
is this a change from last release? | 19:38 | ||
i.e. should it be in the changelog? | |||
19:42
fake_space_whale joined
19:43
p6bannerbot sets mode: +v fake_space_whale
|
|||
Geth | MoarVM: 225ab3e923 | (Samantha McVey)++ | docs/ChangeLog Update ChangeLog |
19:50 | |
MoarVM: 867318a8cc | (Samantha McVey)++ | tools/update-changelog.p6 Fix a few formatting issues with update-changelog.p6 |
19:51 | ||
ItchyPlant | Does anyone know what to do with Rakudo if MoarVM was compiled with --static? :) | 19:53 | |
jnthn | I don't think it's possible to compile Rakudo with that configuration, since it wants to link the extension ops against libmoar (we want to get rid of those in the future, at which point --static will work OK) | 19:54 | |
ItchyPlant | I'm just asking because when I add the "--static" parameter for MoarVM's Configure.pl, then it compiles and finishes without any errors. | 19:55 | |
...then NQP was also Ok but Rakudo complained about a huge amount of undefined symbols. | 19:56 | ||
OK, so it won't have any further benefit, Rakudo still won't be compiled (on AIX). I tried on a 7.2 anyway too, the results are the same: compilation crashes at that point. :) | 19:59 | ||
timotimo | samcv: i think the bug was introduced at least one release earlier; whenever jnthn made spesh more responsive to the GC | 20:04 | |
samcv | ok | 20:07 | |
20:40
ItchyPlant left
20:56
lizmat joined,
p6bannerbot sets mode: +v lizmat
|
|||
MasterDuke | timotimo: i'm getting a bunch of warnings in heapsnapshot.h and graph.c | 21:04 | |
gcc version 8.2.1 20180831 (GCC) | 21:05 | ||
gist.github.com/MasterDuke17/32900...0da7f50864 | 21:06 | ||
samcv | i'm trying to turn the sleep bug into a test. but i'm not getting it to trigger? | 21:08 | |
21:18
zakharyas left
21:25
Zoffix joined,
p6bannerbot sets mode: +v Zoffix
|
|||
Zoffix | samcv: there is a kinda test for it already: R#2395 after your fix that test file started non-hanging for me again | 21:26 | |
synopsebot | R#2395 [closed]: github.com/rakudo/rakudo/issues/2395 [perf] t/spec/S32-io/io-cathandle.t is now 2x-8x slower without precomp | ||
Zoffix | So if bug returns, that file would be super slow (at least on some boxes) | ||
samcv | ah ok | 21:27 | |
ok cool :) | |||
once this spectest is done, i will release | |||
Zoffix | \o/ | 21:28 | |
jnthn | samcv++ \o/ | 21:29 | |
timotimo | MasterDuke: ah, all it needs is a few casts | 21:38 | |
AlexDaniel | samcv: btw what's the status of this? github.com/rakudo/rakudo/issues/2337 | 21:39 | |
timotimo | if it's okay i'll just push it to master | 21:40 | |
samcv: would that be fine, warning fixes? | 21:41 | ||
samcv | yeah go ahead | ||
AlexDaniel: regarding that, i think there's a few things needing to be updated. i was going to check roast/docs/unicode-generated-tests.asciidoc after release | |||
AlexDaniel | ok cool | 21:42 | |
Geth | MoarVM: ac5fac457f | (Timo Paulssen)++ | src/spesh/graph.c fix up warnings by putting some casts in |
||
samcv | i wanted to get that updated before 6.d at least :) | ||
MasterDuke | timotimo: no more warnings | 21:46 | |
21:46
AlexDaniel left,
AlexDaniel joined,
p6bannerbot sets mode: +v AlexDaniel
|
|||
AlexDaniel | MasterDuke: thank you :) | 21:47 | |
and timotimo++ | |||
I hated those :) | |||
MasterDuke | samcv: btw, did you see that article i mentioned to you a couple days ago? | 21:48 | |
samcv | which one? | 21:50 | |
MasterDuke | samcv: darkcephas.blogspot.com/2018/10/val...ookup.html | 22:16 | |
Geth | MoarVM: 0b5bde835d | (Samantha McVey)++ | VERSION Bump VERSION for release 2018.10 |
22:20 | |
samcv | \o/ release is done | 22:21 | |
Zoffix | samcv++ | ||
AlexDaniel | that was fast | ||
samcv++ | 22:22 | ||
timotimo | nice | 22:34 | |
oh, release is through, i can merge the split thing | 23:21 |