github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:38 SuperSeriousCat2 joined 00:39 SuperSeriousCat2 left 00:52 stmuk joined 00:53 p6bannerbot sets mode: +v stmuk 00:54 stmuk_ left 00:59 pppingme10 joined 01:02 pppingme10 left 01:04 stmuk_ joined 01:05 p6bannerbot sets mode: +v stmuk_ 01:06 stmuk left 01:17 stmuk joined 01:18 p6bannerbot sets mode: +v stmuk 01:20 stmuk_ left 02:10 lizmat left 02:31 lizmat joined 02:32 p6bannerbot sets mode: +v lizmat 02:35 lizmat left 02:37 Guest19235 joined, Guest19235 left 03:05 darkmagic joined 03:08 darkmagic left 04:14 reportable6 left, committable6 left, nativecallable6 left, squashable6 left, undersightable6 left, evalable6 left, notable6 left, quotable6 left, statisfiable6 left, coverable6 left, bloatable6 left, unicodable6 left, shareable6 left, releasable6 left, benchable6 left, bisectable6 left, greppable6 left, notable6 joined, nativecallable6 joined, committable6 joined, coverable6 joined, bisectable6 joined, greppable6 joined, bloatable6 joined, quotable6 joined, benchable6 joined, unicodable6 joined, evalable6 joined, shareable6 joined, squashable6 joined, releasable6 joined, reportable6 joined, undersightable6 joined, statisfiable6 joined 04:15 p6bannerbot sets mode: +v notable6, p6bannerbot left, p6bannerbot joined, ChanServ sets mode: +o p6bannerbot 06:35 domidumont joined 06:36 p6bannerbot sets mode: +v domidumont 08:21 domidumont left
nine Oh boy. I think I now understand the NativeCall JIT issue I found yesterday. For rw args, I read the value back from the args buffer after the call and assign them to the lexref. BUT since I side step most of the invoke compilation stuff, the arg_* instructions are never compiled to code and the values are never actually copied to the args buffer. 08:56
Instead, the native functions get pointers to the WORK registers where the original values are located. Seems like this just works most of the time by accident. 08:58
What I don't understand however is why this works in interpreted code.
Oh...of course. Because in the interpreted code the argument is actually copied to the args buffer :) 09:06
09:12 nkk71 joined
nine So either, I solve this by making it compile the arg_* instructions. Or I get rid of the getarg_* and have it take the written value from the WORK register 09:14
I guess the latter may run into issues with future spesh improvements while the former is a tiny bit slower but safer. 09:15
09:15 nkk71 left
nine Though the latter would actually be pretty easy to implement... 09:43
Well, at least the bug hunt was totally worth it. The optimization that uncovered it got me some 5-10 % :) 10:34
10:55 lizmat joined 10:56 p6bannerbot sets mode: +v lizmat
jnthn Kaiepi: The typical pattern for that, as done with Proc::Async when we wanted to plumb fds together but still return a Supply, is to return a subclass of Supply which can be used to obtain the descriptor before being tapped 11:09
nine++ # bug hunting 11:10
lizmat jnthn: do you agree that something like "my int @a; @a[0] = 42" 11:12
should statically optimize to something like "nqp::assign(nqp::atpos(@a,0),42)" ? 11:13
*atpos_i
jnthn No, I think our inlining tech is closing in on doing that for us anyway 11:14
lizmat ok 11:15
jnthn Also I suspect the general case needs a range check?
lizmat I guess adding a postcircumfix<[ ]>(Blob:D , int) candidate wouldn't make sense for the same reason ? 11:16
jnthn What, that avoids calling .AT-POS?
lizmat yeah
jnthn Yeah, that breaks subclassing I guess
But for both Array and Hash it's already flattening the whole postcircumfix and AT-POS/AT-KEY thing into the caller 11:17
lizmat I guess we need spectests for that then :-)
jnthn :) 11:18
lizmat I guess we need to wait for an nqp release before we can merge all the nice goodies in MoarVM and bump everything, right ? 11:19
jnthn We can merge various things. Not the postrelease-opts (unless you want assorted SEGVs :)) 11:21
lizmat well, the next release target is only 2 weeks away 11:23
jnthn Then it'll happen after the next release, unless somebody else is up for the debugging :) 11:27
'cus this week I've got teaching + conf, and next week I'm taking some vacation :)
timotimo how do we feel about putting $arg.WHAT =:= ExactClass checks into core setting routine? 11:28
lizmat timotimo: been done before
timotimo was it bad?
jnthn Might turn out to be of marginal benefit these days given we spesh on arg type 11:29
lizmat DateTime.new basically does that so it can use a positional interface to create objects 11:30
jnthn otoh, it'll also specialize well in the other cases :)
(Where specializing on argument alone isn't enough to get the win)
lizmat but having Blob:D as a constraint, where it is a parameterized role, won't do much good 11:31
there would be a lot to test against
jnthn tbrowder_: Did you try a --ll-exception and working out exactly where the bad invoke is? 11:35
tbrowder_ not yet, but i will shortly 11:39
got to go now but thanks for help 11:42
jnthn: don’t waste time on my prob, i think i’ve run into the nqp not giving good err msg, will report later 11:46
got a good $/.dump, will report details on #perl6-dev, thanks! 12:36
13:43 MasterDuke left 14:01 yoleaux joined 14:02 p6bannerbot sets mode: +v yoleaux 14:13 webbyz joined 14:14 zakharyas joined 14:15 ecrist1 joined, p6bannerbot sets mode: +v zakharyas 14:17 webbyz left 14:18 ecrist1 left 14:45 camelia left 14:46 camelia joined 14:47 p6bannerbot sets mode: +v camelia 16:28 fake_space_whale joined 16:29 p6bannerbot sets mode: +v fake_space_whale 17:30 fractal18 joined 17:33 fractal18 left 17:34 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke 18:02 lizmat left 18:32 lizmat joined 18:33 p6bannerbot sets mode: +v lizmat 18:48 domidumont joined 18:49 p6bannerbot sets mode: +v domidumont 18:53 patrickz joined, p6bannerbot sets mode: +v patrickz 19:05 domidumont left 19:46 MrElendig18 joined, MrElendig18 left 20:22 zakharyas left 21:26 patrickz left 21:34 fake_space_whale left 21:35 fake_space_whale joined, p6bannerbot sets mode: +v fake_space_whale 21:50 jcline29 joined 21:55 jcline29 left 23:22 reportable6 left, reportable6 joined 23:23 p6bannerbot sets mode: +v reportable6
AlexDaniel samcv: so is updating the wiki page part of the release process? gist.github.com/Whateverable/301c9...ouncements 23:28
23:59 lizmat left, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke