github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:00 reportable6 left 00:02 Kaypie left 00:03 reportable6 joined 00:08 tellable6 left 00:10 evalable6 joined 00:13 tellable6 joined 00:57 pamplemousse joined 01:10 evalable6 left 01:12 evalable6 joined 01:23 tellable6 left 01:27 tellable6 joined 02:11 pamplemousse left 02:23 pamplemousse joined 02:27 evalable6 left 02:28 tellable6 left 02:30 evalable6 joined 02:31 tellable6 joined 02:43 pamplemousse left, pamplemousse joined 02:59 pamplemousse left 03:02 lucasb left
Geth MoarVM/fix_decoder_on_exceptions: e2f576370f | (Stefan Seifert)++ | 3 files
Fix bogus "Decoder may not be used concurrently" after exceptions

If stream decoding throws an exception (like on bad UTF-8) the deocder's in_use flag would stay set preventing any further use of the decoder. This can lead to great action-at-a-distance effects.
Fix by extending the MVM_tc_(set|release)_ex_release_mutex mechanism to support such flags in addition to fully blown mutexes. This way we can keep the light weight in_use flag for the cost of a single bit test and branch when throwing exceptions.
03:38
MoarVM: e2f576370f | (Stefan Seifert)++ | 3 files
Fix bogus "Decoder may not be used concurrently" after exceptions

If stream decoding throws an exception (like on bad UTF-8) the deocder's in_use flag would stay set preventing any further use of the decoder. This can lead to great action-at-a-distance effects.
Fix by extending the MVM_tc_(set|release)_ex_release_mutex mechanism to support such flags in addition to fully blown mutexes. This way we can keep the light weight in_use flag for the cost of a single bit test and branch when throwing exceptions.
MoarVM: 8c47931e20 | niner++ (committed using GitHub Web editor) | 3 files
Merge pull request #1153 from MoarVM/fix_decoder_on_exceptions

Fix bogus "Decoder may not be used concurrently" after exceptions
05:26 brrt joined
brrt .tell pamplemousse great! looking forward to it 05:27
tellable6 brrt, I'll pass your message to pamplemousse
nwc10 good *, brrt
brrt good hi nwc10 05:28
I think I've worked out how I want the linear IR nodes to look 05:54
I can make 'm as small as 20 bytes, but I'd rather make that 16, so that 4 can fit on a single cache line
but I don't know how to do that 05:55
bbiab
05:55 brrt left 06:00 reportable6 left 06:03 reportable6 joined 07:51 zakharyas joined 07:56 brrt joined
brrt ... I think I do know how to make them 16 bytes.... 07:57
nwc10 good. because I was going to say "paste what you have, and I'll see what I can think of" 07:58
brrt the 'size' parameter of the 'load' and 'store' operator is redundant; nodes always carray a size
nwc10 but if you're already there...
brrt I'll paste it anyway :-)
nwc10 I have a meeeeeeeeeting in about 2 minutes...
brrt I may have been wrong.... 08:00
gist.github.com/bdw/e5254580a7eb35...7c0df448b3 08:01
I even have a byte left :-D
- STORE has two operands and a size parameter. But the size parameter can just go into the 'size' attribute
- SCAST and UCAST have one operand and two parameters each... again, target size can be the size attribute, the only parameter needed then is the source size 08:03
- IF and IFV have three arguments, but these will disappear when transformed into linear form anyway 08:04
so two arguments is really enough
(with 16 bytes, they'll fit into a register pair, too) 08:05
size and type can be combined, too... but that may be too inconvenient to be worth it
nwc10: I assume you already got there 08:08
nwc10 I have now escaped, but I have no coffee 08:28
brrt this can be problemati 08:29
c
that reminds me.... I need tea 08:32
09:10 sena_kun joined 09:13 brrt left 09:51 fake_space_whale joined 12:00 reportable6 left 12:04 reportable6 joined 12:16 pamplemousse joined 12:20 Visitor joined 12:33 zakharyas left 12:40 pamplemousse left, Visitor is now known as pamplemousse
pamplemousse o/ 12:40
tellable6 2019-08-19T05:27:41Z #moarvm <brrt> pamplemousse great! looking forward to it 12:41
12:41 lucasb joined 12:59 domidumont joined 13:09 brrt joined 13:26 Guest93053 joined 13:27 reportable6 left 13:32 reportable6 joined 13:34 shareable6 left, committable6 left, greppable6 left 13:35 squashable6 left, committable6 joined 13:37 shareable6 joined 13:38 squashable6 joined, greppable6 joined
brrt \o 14:08
timotimo o/ 14:09
14:22 brrt left, brrt joined
pamplemousse o/ brrt, timotimo 14:22
jnthn m: say 25.4 / 28.8 15:03
camelia 0.881944
jnthn Turns out a fix to args spesh to handle a missed case there has a positive effect on a DBIish insert benchmark :) 15:06
timotimo oh, very nice 15:09
brrt ohai pamplemousse, jnthn 15:11
jnthn o/ brrt 15:12
brrt jnthn: I saw your concurrency keynote on perlcon riga on youtube... very nice :-) 15:13
timotimo yes, indeed 15:14
jnthn :) 15:16
Kaiepi can someone review github.com/MoarVM/MoarVM/pull/1152 ? i can't really continue with the grant work until this gets merged since the next changes i'm planning on doing depend on some of the refactors made here 15:18
jnthn Kaiepi: Will see if I can take a look this evening 15:19
Kaiepi thanks
Geth MoarVM: d1af2f2fcc | (Jonathan Worthington)++ | src/spesh/args.c
Handle arg spesh native param passed a Scalar

If the Scalar contains something of the appropriate type to unbox, then transform the parameter instruction into a decont_[ins]. Since failing args spesh has knock-on effects, this can have a quite positive impact. For example, it's worth ~10% off a DBIish insertion benchmark.
15:22
15:23 Guest93053 left
timotimo i wonder if my spesh comments helped find that 15:26
jnthn Yes :) 15:27
Well, of note, they mentioned Scalar, which made it really clear what was wrong
timotimo \o/
the comments aren't all the same, i should unify them 15:28
and maybe every spot where "goto cleanup" happens should also put a comment at least somewhere in the spesh dump 15:29
jnthn yeah, could be handy 15:32
timotimo for example, we skip all the param op versions that have two alternative names in them 15:33
making that more easily searchable in the spesh dump with a "spesh arg bail:" message could be useful
AlexDaniel if tellable6 misbehaves again please ping me :)
timotimo AlexDaniel: could you make it smart enough to not tell when i quickly respond to someone telling me something? 15:35
AlexDaniel timotimo: it shouldn't do that if you're on the channel, there was an issue with that which I hopefully fixedā€¦ 15:39
timotimo .tell AlexDaniel thank you for that
tellable6 timotimo, I'll pass your message to AlexDaniel
AlexDaniel oh, I see what you mean
tellable6 2019-08-19T15:39:16Z #moarvm <timotimo> AlexDaniel thank you for that
timotimo yeah, that
AlexDaniel sure
timotimo: hmm, now that I think about it, it's a bit more difficult. It has to either track if you were on the channel when .tell was issued, or it should save when you joined the channel 15:43
both of which will take more than a single line to implement x)
but option #1 isn't that bad actually 15:45
tellable6: do you want it to silently not do anything?
tellable6 AlexDaniel, I haven't seen do around, did you mean o_?
AlexDaniel timotimo: oops, that was a question for you 15:46
15:46 brrt left
timotimo yeah, i think it should just drop the tell; would be fine if it were very conservative 15:46
jnthn: i think the handling of param_sp could be wrong in MVM_spesh_args 16:03
param_sp and param_sn break out of the while loop for instructions
but i have a BB here that has param_sp and param_sn in the same BB right in a row
oh 16:04
disregard that, the break is very obviously for the switch, not the while
the actual case here is that a QAST::Op.new is being called with two positionals, and there's a param_sp, but it bails out because it finds no op that takes the argument with index 1 16:05
there doesn't seem to be any handling for param_sp in all of spesh? but MVM_spesh_args also doesn't bail out in that case. interesting. so we just rely on the regular implementation of param_sp to do what it needs to do? 16:07
jnthn I guess we must, yes 16:10
timotimo we already specialize param_sn into "create a hash and populate it", any particular reason we don't do that with param_sp as well? 16:11
16:14 tellable6 left 16:17 tellable6 joined
AlexDaniel timotimo: test 16:18
.tell timotimo it should work now
tellable6 AlexDaniel, I'll pass your message to timotimo
timotimo AlexDaniel: thank you
AlexDaniel .tell evalable6 test test
tellable6 AlexDaniel, I'll pass your message to evalable6
16:45 sena_kun left 16:49 domidumont left 16:50 domidumont joined 18:00 reportable6 left 18:02 reportable6 joined
AlexDaniel .tell timotimo let's try againā€¦ can you please say something? 18:11
tellable6 AlexDaniel, I'll pass your message to timotimo
timotimo i surely can
AlexDaniel ok that part sorta works
but I think in 10 minutes it'll still deliver the messageā€¦ weird
.tell timotimo smth smth 18:13
tellable6 AlexDaniel, I'll pass your message to timotimo
timotimo hum.
AlexDaniel hmm
also seeing ā€œUse of uninitialized value of type Any in string context.ā€ and no line number :)
ok that was from delivered messages on #perl6-dev 18:19
18:27 sena_kun joined
AlexDaniel .tell timotimo one more test 18:35
tellable6 AlexDaniel, I'll pass your message to timotimo
AlexDaniel actually I'll use a bot for thatā€¦ 18:36
.tell shareable6 test test 18:37
tellable6 AlexDaniel, I'll pass your message to shareable6
AlexDaniel shareable6: help
shareable6 AlexDaniel, Like this: shareable6: f583f22 # See wiki for more examples: github.com/perl6/whateverable/wiki/Shareable
AlexDaniel .tell greppable6 test test
tellable6 AlexDaniel, I'll pass your message to greppable6
19:27 domidumont left
timotimo AlexDaniel: thanks 19:30
jnthn: what's the reason that spesh arg bails when any given arg isn't fetched by a corresponding instruction? 19:37
jnthn timotimo: An abundance of caution, I think :) 19:51
timotimo: Well, if you mean positional. 19:52
timotimo yes, positionals
tellable6 2019-08-19T18:35:48Z #moarvm <AlexDaniel> timotimo one more test
timotimo damn it, AlexDaniel :) :)
jnthn I don't think we ever generate code with them missing, though
timotimo yes we do :) :)
if there's a param_sp
i'll make it not bail if a param_sp was seen, and see to it that param_sp generates tight code to grab stuff from the args buffer and put it into the array 19:53
hm, though actually, there'll be some interesting stuff with regards to native arguments and such, they'll want boxed
hum. but if i handle param_sp early enough, i can just emit regular boring param_rp_o args and register them with the code that would normally optimize them 19:54
19:55 Altai-man_ joined
timotimo i'll just only handle the case when there either hasn't been a single param_ro_* yet, or the only one there has been was for an invocant, because param_sp doesn't get the invocant (i think? gotta check that) 19:56
gasp, jnthn 19:57
we generate a fastcreate for the slurpy hash type
but we don't check if it has an initialize function
19:58 sena_kun left
AlexDaniel timotimo: :D 19:58
19:58 Kaiepi left 19:59 Kaiepi joined
AlexDaniel timotimo: also the timing doesn't make any sense xD 19:59
timotimo thanks for working on this btw
20:06 fake_space_whale left 20:12 brrt joined
jnthn timotimo: I...don't think there exists one with an initialize function? :) 20:12
But yeah, technically we probably should check that :) 20:13
Also, you'll probably be able to steal boxing etc. logic from the path that optimizes slurpy hashes
brrt jnthn: would you be ok with a merge of expr-jit-float today?
jnthn brrt: Well, I've not had chance to review it, but I'm happy to trust your judgement on its readiness for merge :)
I wonder if it'll make the Complex benchmark we have even faster... 20:14
20:17 Altai-man_ left
brrt I don't really expect it would.... but then again 20:18
I mostly want it because I want the refactored register allocator API in for my next tasks 20:19
20:19 fake_space_whale joined
MasterDuke brrt: have you done any benchmarking? 20:24
lizmat and another Perl 6 Weekly hits the Net: p6weekly.wordpress.com/2019/08/19/...were-back/ 20:36
brrt MasterDuke: tbh, no :-) 20:51
samcv hey brrt 20:55
AlexDaniel timotimo: I have no idea how it could possibly behave the way it does :D 21:07
21:09 pamplemousse left
timotimo ha 21:09
great
21:09 pamplemousse joined
brrt hey samcv 21:11
AlexDaniel .tell timotimo hello world. This bug is crazy 21:15
tellable6 AlexDaniel, I'll pass your message to timotimo
timotimo :) 21:16
ooh i didn't realize until now that param_sp takes an integer argument that decides at what position it'll start slurping up positionals, that makes so much sense 21:22
21:35 brrt left 22:03 kiwi_50 joined 22:06 pamplemousse left
AlexDaniel timotimo: damn that's a good one 22:24
timotimo what is? 22:25
AlexDaniel timotimo: #92 22:26
timotimo well, see #perl6-dev 22:27
AlexDaniel to I guess tellable6 is not going to deliver the message this time? 22:58
so*
timotimo maybe 23:01
23:10 rba left 23:12 rba joined 23:14 rba left, rba joined
timotimo if we had a query thingie for spesh logs, i could now search for "elems ops that target the result of an sp_fastcreate that has a comment matching /slurpy positional/" and see if it's worth a lot to put an optimization for that in 23:22
23:28 rba left, rba joined 23:29 rba left, rba joined, rba left 23:30 rba joined 23:36 kiwi_50 left