github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:51 Kaiepi left 00:52 Kaiepi joined 01:07 Kaiepi left 01:08 Kaiepi joined 01:14 Kaypie joined 01:15 Kaiepi left 01:20 Kaypie left 01:22 Kaiepi joined 06:38 Geth left 06:39 Geth joined 06:50 domidumont joined 09:19 camelia joined
nine m: say "alive again" 09:19
camelia alive again 09:20
kawaii samcv: was planning on starting the work on the new release in 2 - 3 hours, does that work for you? 10:05
timotimo nine: how come there's no code in generate_operand for callsite? there's exactly one op that uses it, which is prepargs, don't we ever output that? 10:08
like, surely that'd need to output something 10:10
otherwise the length of the piece of bytecode would be wrong and it'd asplode violently inside the validator?
there must be some other piece of code that handles this; in that case i'll probably throw the generator out, or replace it with code that just dies, and add a comment why that is the case 10:16
nine timotimo: yeah, $call_gen et al in src/vm/moar/QAST/QASTOperationsMAST.nqp generate the code for prepargs directly 10:19
timotimo cool, i'll put that in there 10:21
this gets rid of the annoying "use of Any in string context" warning for update_ops.p6 10:22
10:30 lizmat left 10:33 lizmat joined
timotimo nine: may i ask why the last part of the const_i* ops are wrapped in curly braces? 10:33
10:34 sena_kun joined
timotimo oh 10:35
for lexical variable scope?
any reason in particular to not use the name of the operand? 10:36
i get the impression that none of these functions are typically jitted or even speshed 10:43
ok, it just requires a lot of calls before it gets speshed 10:47
nine Yes, it's for scoping 10:48
Adding the curlies was probably just the easiest solution
timotimo there's also both an "int16 $op1" and a "if $value < -32768 || ..." thing in there 10:51
so, i'm considering throwing that out
fortunately, the braces for scoping get flattened by nqp's optimizer 10:52
so that's already good
but yeah, the range checks should probably go :) 10:54
nine Oh....yes, now that you mention that 11:03
timotimo i'm on it already 11:13
that could give us a percent or two speedup during Stage MAST
or which stage name this has
and if there's no range check, i also see no reason for a "my int $value", and then the block also gets superfluous 11:14
first i'm restoring the whitespace behaviour so that the "git diff" of lib/MAST/Ops.nqp isn't massive 11:20
oh what in the everliving... ?! 11:30
nine: github.com/MoarVM/MoarVM/blob/mast...#L144-L149 - they look wrong; are they actually dead code? 11:31
oh 11:33
writeuint is an actual sub in that file
never mind then
kawaii Is there anyone else here able to tag a 2019.05 release for Moar? :) 11:37
timotimo i can, but it won't have the fancy "verified" badge and that'd not be cool :( 11:41
kawaii I'll be around pretty much all day then if someone comes along :) 11:47
timotimo i assume you pinged samcv already?
kawaii timotimo: yep
timotimo i see you discussed timezones, but not a time-of-day? 11:48
kawaii we didn't but like I said, today is mostly a free day for me so I'm happy to fit in with their schedule 11:49
robertle if for some perverse reason I would like to run something on moar but without nqp/perl6, how would I learn more about the input format? 11:52
I vaguely recall having seen some perl5 modules that represented the different MAST node types, but can't find that now. did I imagine this?
timotimo robertle: you'll want to use A Compilerā„¢, which nqp would offer 11:53
but you don't have to compile something that ends up with dependencies on nqp
have you seen the rakudo & nqp internals workshop slides?
robertle so, you are saying "don't, use nqp"? 11:54
timotimo not necessarily, but you'll probably have the easiest time basing your compiler on nqp 11:55
one important thing that goes into a moarvm file is the "serialized blob"
robertle ok, I'll look at these slides again. last time i did, I was zoning out quite quickly :)
timotimo those are objects (including types), and moarvm generates the results of those from stuff in src/6model/reprs/ and src/core/bytecode.c or something 11:56
it's not hard to steal that code and/or port it to some other language, but it is a bunch of work, and probably not terribly easy to debug once you have something running
anyway, you'll want to check out moarvm's lib/MAST/Ops.nqp to have a look at how frames of code are written out, and a bunch more stuff in nqp's src/vm/moar/QAST/QASTOperationsMAST.nqp and QASTCompilerMAST.nqp 11:57
changing the bytecode writing stuff and passing stresstest sounds good enough to me to put my changes in for the release 12:04
samcv kawaii, this evening i'll be releasing 12:49
kawaii samcv: thanks, just ping me an hour or so before so I can be aware and do my parts for nqp and rakudo too :)
samcv ok :)
timotimo found another little optimization opportunity, yay 12:50
we were only ever specializing unbox_i in P6Opaque objects if it had a p6bigint embedded, not if it was just a p6int 12:51
which the mast compiler uses a little bit
12:51 Geth left 12:52 Geth joined 12:53 AlexDaniel left, AlexDaniel joined
timotimo hmm, i can double-devirt associative and positional access to objects that have a positional or associative delegate slot 14:07
but i'm not totally sure how best to put it in the jit
since i'll have to put a little offset calculation in one of the arguments
oh, can't we use a literal pointer in the jit whenever we pass an STABLE of something we're already guaranteed to know the type of? we'd probably only have to check beforehand if the stable lives in gen2 so it won't move 14:08
16:38 zakharyas joined 19:02 domidumont left
samcv kawaii, i have all but 25 changelog entries processed. but i will have to finish it tomorrow. sorry about that 19:05
kawaii samcv: no problem, I am free most of tomorrow too since it's a national holiday here
samcv i got through 88% of them though. so we can release tomorrow if that works for you.
kawaii Yes that's fine with me :)
samcv okay great. i'll be online during the day in that case 19:06
timotimo samcv: is the work you've done so far in the wiki so i could have a look? 19:13
MasterDuke timotimo: have you done any experiments to see if LTO helps moarvm? 19:17
timotimo don't think so 19:18
MasterDuke well, turns out it makes stage parse 1s slower 19:41
nine MasterDuke: 1s sounds like it's within noise 19:44
timotimo probably 19:46
MasterDuke any other ideas for things to test?
timotimo hm, you mean like very general techniques and flags we could set/use? 19:50
MasterDuke btw, anybody have an opinion on github.com/MoarVM/MoarVM/pull/935 ?
timotimo looks sensible 19:51
MasterDuke timotimo: that too, but i was actually thinking of ways to test if LTO was beneficial or not
timotimo oh, hmm 19:52
not sure
using a more deterministic measuring mode like callgrind could be a good idea (use MVM_SPESH_BLOCKING with that) 19:53
MasterDuke i think github.com/MoarVM/MoarVM/pull/935 is a pretty safe change, but there is a release planned for tomorrow. merge now or wait? 19:54
timotimo i don't see a way for it to break things; how does gcc react when a too-old version encounters that diagnostic setting? 19:56
MasterDuke dunno
20:49 MasterDuke left 20:50 Geth left 20:51 Geth joined 21:36 Kaiepi left 21:37 Kaiepi joined 21:50 robertle left, zakharyas left 22:21 Kaiepi left 22:25 harrow left 22:31 harrow joined 22:37 Kaiepi joined 22:39 Kaiepi left 22:40 Kaiepi joined 23:28 sena_kun left 23:38 MasterDuke joined, MasterDuke left, MasterDuke joined