github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
timotimo the new compiler on the other hand can walk the QAST tree, turning what used to be multiple MAST objects into a single buffer, often using one buffer for long runs of operations 00:00
not only does total memory usage shrink from that, but the memory that is used is now mostly memory ignored by the GC; buffers of 8 bit integers instead of the MAST objects with references forming a (very flat) tree 00:01
so GC runs will also be a little bit faster
01:26 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke
samcv timotimo, ok thanks :) 01:41
02:07 MasterDuke left 02:20 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo 06:05 lizmat left 06:08 avar left 07:06 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 07:07 avar joined, avar left, avar joined, p6bannerbot sets mode: +v avar 07:08 p6bannerbot sets mode: +v avar 07:18 klapperl_ left 07:35 klapperl joined 07:36 p6bannerbot sets mode: +v klapperl 07:49 robertle joined 07:50 domidumont joined, p6bannerbot sets mode: +v robertle 07:51 p6bannerbot sets mode: +v domidumont 07:58 domidumont1 joined 07:59 p6bannerbot sets mode: +v domidumont1 08:01 domidumont left 08:18 robertle left 08:20 robertle joined, p6bannerbot sets mode: +v robertle
Geth MoarVM: c5391ecb10 | (Samantha McVey)++ | docs/ChangeLog
Changelog: Improve desc. on MAST changes and remove duplicate entries
08:30
MoarVM/refs/tags/2018.11: 86c41e3698 | (Samantha McVey)++ | VERSION
Update VERSION for release 2018.11
08:42
MoarVM: 86c41e3698 | (Samantha McVey)++ | VERSION
Update VERSION for release 2018.11
09:02 domidumont1 left 09:04 domidumont joined, p6bannerbot sets mode: +v domidumont 09:11 zakharyas joined 09:12 p6bannerbot sets mode: +v zakharyas 09:22 samcv left 09:26 samcv joined, p6bannerbot sets mode: +v samcv 09:34 robertle left 09:36 Ven`` joined, robertle joined, p6bannerbot sets mode: +v Ven`` 09:37 p6bannerbot sets mode: +v robertle 09:39 robertle left 09:40 Ven`` left 09:43 Ven`` joined, p6bannerbot sets mode: +v Ven`` 09:47 Ven`` left, avar left 09:50 robertle joined 09:51 p6bannerbot sets mode: +v robertle 09:56 Ven`` joined 09:57 p6bannerbot sets mode: +v Ven`` 10:05 avar joined, avar left, avar joined, p6bannerbot sets mode: +v avar 10:12 Ven`` left 10:28 Ven`` joined 10:29 p6bannerbot sets mode: +v Ven`` 10:55 Ven`` left 11:22 lizmat joined, p6bannerbot sets mode: +v lizmat 12:14 ZzZombo left 12:22 Ven`` joined, p6bannerbot sets mode: +v Ven`` 12:42 zakharyas left 13:04 Ven`` left 13:13 Ven`` joined 13:14 p6bannerbot sets mode: +v Ven``
dogbert11 lizmat: what scores do you get when running [Tux] tests. Do you also see deteriorating numbers? 13:26
lizmat no, I haven't seen anything consistently slower since the MoarVM bumo 13:27
*bump
afk for a few hours&
14:08 Ven`` left 14:16 Ven`` joined 14:17 p6bannerbot sets mode: +v Ven``
dogbert11 jnthn: will there be any cool merges after 2018.11 is out 15:06
timotimo releasable6: status 15:07
releasable6 timotimo, Next release will happen when it's ready. 0 blockers. 188 out of 189 commits logged
timotimo, Details: gist.github.com/695315d507a1fbf280...8a92c90be6
timotimo oh, rakudo isn't released yet i guess
but it isn't terribly long until the next release
dogbert11 not sure if AlexDaniel has woken up properly yet :)
timotimo i'm not sure what's left for pea to become mergeable
i do know there's a lot it doesn't do yet 15:08
dogbert11 what's missing?
15:09 Ven`` left
timotimo do you know what pea is about? 15:09
asking to see how much i should explain :)
dogbert11 isn't it about allocating stuff on the stack if certain conditions are met 15:10
that locals doesn't escape from a routine
timotimo right
well, that's escape analysis in general
partial escape analysis can be used in more cases 15:11
dogbert11 aha
what does 'partial' mean then
timotimo the trick behind it is that if the code path by which an object may escape is very rare, like when an exception is thrown that contains the object in question, but it only happens once every hundred thousand calls
then it can put a "deopt" mechanism in 15:12
that restores the actual object from all attributes that it would have had at that point if it had been allocated on the heap immediately
dogbert11 so it caters to cases where the general case wouldn't work then
timotimo aye 15:13
dogbert11 cool
timotimo with the idea being that this pattern is overwhelmingly common in perl6 code, i guess
dogbert11 what kind of speedups are we talking about in general, a couple of percent?
timotimo potentially all of the speedup forever 15:14
:P
but i really can't tell for sure
we'll probably be getting around a whole lot of Scalar allocations
dogbert11 sounds promising
timotimo and throwing out allocations has knock-on effects, of course 15:15
dogbert11 on GC I guess
15:15 lizmat left
timotimo having fewer useless allocations means that objects that die "early but not extremely early" have a better chance of getting thrown out before reaching gen2 15:15
and not having to gc as often in general is, of course, also a win 15:16
but just from gut feeling, those effects would be in the 0% - 1% range on typical code
dogbert11 every little bit counts 15:17
do you know if the pea work is in MoarVM only or have changes been made in nqp as well?
timotimo it's in moarvm only 15:18
dogbert11 so I should be able to take it for a spin
15:18 Ven`` joined
timotimo the mechanism will get almost all of its wins post-inline, which only spesh can really do 15:18
15:19 p6bannerbot sets mode: +v Ven``
dogbert11 it builds, running a spectest to see how it looks 15:21
timotimo pea currently doesn't dare to do a whole lot 15:23
the mechanism that recreates the objects when necessary is currently only sketched out, not active 15:24
dogbert11 aha 15:27
spectest was clean FWIW
15:36 Ven`` left, Ven`` joined 15:37 p6bannerbot sets mode: +v Ven`` 15:39 zakharyas joined 15:40 p6bannerbot sets mode: +v zakharyas
jnthn I've started building out the deopt bits for pea. It's tricky. :) 15:47
15:50 Ven`` left
AlexDaniel dogbert11, jnthn: you can already merge stuff 16:23
16:23 robertle left
AlexDaniel rakudo/nqp are released from release branches, so once moar release is out there's no reason to hold your stuff :) 16:23
I'm awake but a bit busy right now, rakudo will be release a bit later today I think 16:24
depending on your timezone :P
jnthn Mine ain't quite mergeable yet, alas 16:33
16:40 domidumont left 17:01 robertle joined, p6bannerbot sets mode: +v robertle 17:30 Kaiepi left 17:31 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 18:48 lizmat joined, p6bannerbot sets mode: +v lizmat 18:50 Kaypie joined, Kaiepi left, p6bannerbot sets mode: +v Kaypie
samcv morning 18:55
19:42 zakharyas left 20:03 Ven`` joined
timotimo ohai 20:03
20:03 p6bannerbot sets mode: +v Ven``
samcv nice. just got my plane ticket by email. starting my new job at booking jan 7th 20:05
20:12 Ven`` left
[Coke] congrats! 20:15
you moving too? big changes.
tadzik nice, congrats :) 20:22
samcv yeah moving :) 20:27
lizmat samcv: so did you find a place in Amsterdam yet ? 20:35
samcv no 20:37
i have temp housing for 4 weeks so i can look when i get there
moving across the ocean is a lot of work though. many things i have left to do 20:38
lizmat 4 weeks isn't a lot to find a place in Amsterdam :-(
samcv well i can always stay in temp housing as well. i just have to pay after 4 weeks 20:39
20:41 zakharyas joined, p6bannerbot sets mode: +v zakharyas
lizmat aah... ok, so that's not too bad then 20:47
21:04 Ven`` joined 21:05 p6bannerbot sets mode: +v Ven`` 21:08 Ven`` left
timotimo woohoo i found an optimization opportunity in Match's !MATCH ... though it is an extraordinarily tiny one 21:20
lizmat any tiny ones there will help all regexes and stuff that use regexes under the hood, right ? 21:22
timotimo would you look at that. !MATCH doesn't get jitted because coerce_sI isn't jitted 21:24
lizmat not because of its size /
?
timotimo we jit frames of pretty much any size 21:25
it's getting stuff inlined that can be prevented by size
lizmat ah, yes, :-)
21:27 robertle left
timotimo if you want to know my tremendous optimization idea: 21:27
github.com/rakudo/rakudo/blob/mast...ch.pm6#L48
move the line $onlyname = $name if nqp::iseq_i($namecount, 1);
after the block it's currently in
lizmat timotimo: why not before ? 21:30
timotimo because by that time $name isn't set yet
lizmat ah, yeah
timotimo then the nqp::shift($iter) would have to be moved, too
perhaps it's worth it, but i went with the smallest change first
frame size of !MATCH went from 1212 bytes (28 from inlines) down to 1100 bytes (14 from inlines) 21:31
^- one sink call less
because, believe it or not, the assignment was causing a string to be boxed just so it could be sunk
which is ... sadface
lizmat so, turning that into NQP code with have inhibited the boxing ? 21:32
because it would then not be sunk ?
timotimo the frame used to need 34 registers and 23 spesh slots, now it only needs 26 registers and 19 spesh slots
not sure, actually
perhaps that's an opportunity that can be found in many more places, though 21:33
lizmat yeah, I was thinking that all of the postfix "if"s should be checked for that
m: sub foo(Str $a) { }; my Int $b = 42; foo($b) # wow, didn't know this was actually also a compile time error 21:40
camelia ===SORRY!=== Error while compiling <tmp>
Calling foo(Int) will never work with declared signature (Str $a)
at <tmp>:1
------> sub foo(Str $a) { }; my Int $b = 42; āfoo($b) # wow, didn't know this was actu
timotimo interesting, that fromstr_I there immediately turns into a decont_I, i.e. the bigint that gets created immediately gets truncated back to a 64bit integer
yeah, the compile-time dispatch/evaluation analyzer part of the optimizer does that 21:41
lizmat m: my Int $b = "foo" # then why isn't this a compile time error ?
camelia Type check failed in assignment to $b; expected Int but got Str ("foo")
in block <unit> at <tmp> line 1
timotimo not sure 21:42
lizmat it codegens as a WVal(Str) 21:43
I guess it's a NYI
timotimo hooray, the coerce_sI now gets a p6oget_bi instead of a generic decont_i
we might perhaps want to have nqp::clone($empty_list) instead of [] in there, since it gets code-genned as a full call to &circumfix:<[ ]> 21:45
21:47 Kaypie left
lizmat but then it wouldn't be an Array when it gets HLLized ? 21:47
21:47 Kaypie joined
lizmat timotimo: perhaps a nqp::create(Array) would be more appropriate ? 21:48
timotimo $empty_list has to have the right thing in it of course
21:48 p6bannerbot sets mode: +v Kaypie
timotimo true. whatever's right there, really %) 21:48
lizmat fwiw, I think that whole piece of code could use a refactor 21:49
but I won't have time for that until next week
21:49 Merfont joined, Kaypie left
lizmat busy writing blog posts, PM meetings + visiting people and having people visiting :-) 21:49
21:50 p6bannerbot sets mode: +v Merfont
timotimo OK! 21:50
do you know of a way to force that block to be invoked in void context? because right now it's returning a string object some of the time, which it wouldn't have to, IMO 21:51
lizmat you mean the if block ? 21:53
timotimo yes
with an nqp::if perhaps?
lizmat yup, that would do it afaik
or perhaps a --> Nil in the signature ?
timotimo i'll try that first 21:54
lizmat -> --> Nil actually :-) 21:56
21:57 zakharyas left
timotimo aye 21:57
it's 1166 bytes big now for some reason :( 21:58
lizmat ok, nqp::if it is then :-) 21:59
timotimo it's actually doing a return_o of Nil now
and it's doing invoke_v of the sink method it expects on $name
so maybe if i turn the ?? !! into an nqp::if it won't try to sink $name
lizmat goes off for some early sleep& 22:02
timotimo good night and rest well :)
replacing the ?? !! didn't do it, alas 22:08
Geth MoarVM: c2952f9e24 | (Timo Paulssen)++ | src/jit/graph.c
JIT Compile coerce_sI Op
22:18
MoarVM: c2640e1dc6 | (Timo Paulssen)++ | src/spesh/facts.c
Discover Type Facts of coerce_sI Op