[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
[02:37] *** Guest19235 left
[03:05] *** darkmagic joined
[03:08] *** darkmagic left
[04:14] *** reportable6 left
[04:14] *** committable6 left
[04:14] *** nativecallable6 left
[04:14] *** squashable6 left
[04:14] *** undersightable6 left
[04:14] *** evalable6 left
[04:14] *** notable6 left
[04:14] *** quotable6 left
[04:14] *** statisfiable6 left
[04:14] *** coverable6 left
[04:14] *** bloatable6 left
[04:14] *** unicodable6 left
[04:14] *** shareable6 left
[04:14] *** releasable6 left
[04:14] *** benchable6 left
[04:14] *** bisectable6 left
[04:14] *** greppable6 left
[04:14] *** notable6 joined
[04:14] *** nativecallable6 joined
[04:14] *** committable6 joined
[04:14] *** coverable6 joined
[04:14] *** bisectable6 joined
[04:14] *** greppable6 joined
[04:14] *** bloatable6 joined
[04:14] *** quotable6 joined
[04:14] *** benchable6 joined
[04:14] *** unicodable6 joined
[04:14] *** evalable6 joined
[04:14] *** shareable6 joined
[04:14] *** squashable6 joined
[04:14] *** releasable6 joined
[04:14] *** reportable6 joined
[04:14] *** undersightable6 joined
[04:14] *** statisfiable6 joined
[04:15] *** p6bannerbot sets mode: +v notable6

[04:15] *** p6bannerbot left
[04:15] *** p6bannerbot joined
[04:15] *** ChanServ sets mode: +o p6bannerbot

[06:35] *** domidumont joined
[06:36] *** p6bannerbot sets mode: +v domidumont

[08:21] *** domidumont left
[08:56] <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:58] <nine> 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] <nine> What I don't understand however is why this works in interpreted code.

[09:06] <nine> Oh...of course. Because in the interpreted code the argument is actually copied to the args buffer :)

[09:12] *** nkk71 joined
[09:14] <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:15] <nine> I guess the latter may run into issues with future spesh improvements while the former is a tiny bit slower but safer.

[09:15] *** nkk71 left
[09:43] <nine> Though the latter would actually be pretty easy to implement...

[10:34] <nine> Well, at least the bug hunt was totally worth it. The optimization that uncovered it got me some 5-10 % :)

[10:55] *** lizmat joined
[10:56] *** p6bannerbot sets mode: +v lizmat

[11:09] <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:10] <jnthn> nine++ # bug hunting

[11:12] <lizmat> jnthn: do you agree that something like "my int @a; @a[0] = 42"

[11:13] <lizmat> should statically optimize to something like "nqp::assign(nqp::atpos(@a,0),42)" ?

[11:13] <lizmat> *atpos_i

[11:14] <jnthn> No, I think our inlining tech is closing in on doing that for us anyway

[11:15] <lizmat> ok

[11:15] <jnthn> Also I suspect the general case needs a range check?

[11:16] <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?

[11:16] <lizmat> yeah

[11:16] <jnthn> Yeah, that breaks subclassing I guess

[11:17] <jnthn> 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  :-)

[11:18] <jnthn> :)

[11:19] <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:21] <jnthn> We can merge various things. Not the postrelease-opts (unless you want assorted SEGVs :))

[11:23] <lizmat> well, the next release target is only 2 weeks away

[11:27] <jnthn> Then it'll happen after the next release, unless somebody else is up for the debugging :)

[11:27] <jnthn> 'cus this week I've got teaching + conf, and next week I'm taking some vacation :)

[11:28] <timotimo> how do we feel about putting $arg.WHAT =:= ExactClass checks into core setting routine?

[11:28] <lizmat> timotimo: been done before

[11:28] <timotimo> was it bad?

[11:29] <jnthn> Might turn out to be of marginal benefit these days given we spesh on arg type

[11:30] <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 :)

[11:30] <jnthn> (Where specializing on argument alone isn't enough to get the win)

[11:31] <lizmat> but having Blob:D as a constraint, where it is a parameterized role, won't do much good

[11:31] <lizmat> there would be a lot to test against

[11:35] <jnthn> tbrowder_: Did you try a --ll-exception and working out exactly where the bad invoke is?

[11:39] <tbrowder_> not yet, but i will shortly

[11:42] <tbrowder_> got to go now but thanks for help

[11:46] <tbrowder_> jnthn: don’t waste time on my prob, i think i’ve run into the nqp not giving good err msg, will report later

[12:36] <tbrowder_> got a good $/.dump, will report details on #perl6-dev, thanks!

[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
[14:15] *** 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
[17:34] *** 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
[18:53] *** p6bannerbot sets mode: +v patrickz

[19:05] *** domidumont left
[19:46] *** MrElendig18 joined
[19:46] *** MrElendig18 left
[20:22] *** zakharyas left
[21:26] *** patrickz left
[21:34] *** fake_space_whale left
[21:35] *** fake_space_whale joined
[21:35] *** p6bannerbot sets mode: +v fake_space_whale

[21:50] *** jcline29 joined
[21:55] *** jcline29 left
[23:22] *** reportable6 left
[23:22] *** reportable6 joined
[23:23] *** p6bannerbot sets mode: +v reportable6

[23:28] <AlexDaniel> samcv: so is updating the wiki page part of the release process? https://gist.github.com/Whateverable/301c9256894bb6d441b3c504299a064b#release-announcements

[23:59] *** lizmat left
[23:59] *** MasterDuke left
[23:59] *** MasterDuke joined
[23:59] *** herbert.freenode.net sets mode: +v MasterDuke

[23:59] *** p6bannerbot sets mode: +v MasterDuke

