github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm Set by AlexDaniel on 12 June 2018. |
|||
samcv | m: my @list; sub add-to (@list, $item) { if 2.rand.Int && @list { splice @list, 1, 0, $item } else { unshift @list, $item }}; for ^10 {add-to(@list, $_)}; say @list | 01:11 | |
camelia | [9 5 8 7 6 4 3 0 2 1] | ||
samcv | # that is demonstrating randomizing inserting at the first or second place | 01:13 | |
so it's more randomized for sure | |||
Geth | MoarVM: jstuder-gh++ created pull request #891: Alter some exprjit templates to remove branching |
02:15 | |
02:23
lizmat left
05:18
brrt joined
|
|||
brrt | \o | 05:49 | |
06:01
domidumont joined
|
|||
samcv | \o | 06:05 | |
06:08
domidumont left
06:09
domidumont joined
06:19
domidumont left
06:24
brrt left
06:36
robertle joined
07:42
brrt joined
07:54
domidumont joined
08:06
brrt left
08:07
brrt joined
08:13
dogbert17 joined
08:14
robertle left,
robertle joined,
[Coke] joined
08:15
[Coke] left,
[Coke] joined
08:35
lizmat joined
|
|||
brrt | oops, another ARG6 issue that appveyor spotted | 09:00 | |
Geth | MoarVM: 2592774c56 | (Jeremy Studer)++ (committed by Bart Wiegmans) | 2 files Make minor alterations to some exprjit templates * isfalse_s can use a flagval instead of branch * Remove the 'let' from iscoderef template * Alter is_vmnull macro so that it can be flagval-ed |
09:04 | |
MoarVM: bd8361e2f8 | (Bart Wiegmans)++ | src/jit/x64/emit.dasc [JIT] Fix ARG6 for windows better Can't read from memory and write from memory at the same time |
09:05 | ||
09:14
lizmat left
09:34
zakharyas joined
09:40
brrt left
10:17
jpf1 left
10:23
MasterDuke left
10:34
brrt joined
11:49
jpf1 joined
|
|||
brrt | .tell Zoffix we could have such an option, but I'd prefer not to; I'd prefer to have a nativecall impl on WSL that didn't need to make a hole in OS exploit defenses | 11:57 | |
yoleaux | brrt: I'll pass your message to Zoffix. | ||
12:12
brrt left
12:37
brrt joined
13:45
brrt left
|
|||
Geth | MoarVM: 9745f9216c | (Jonathan Worthington)++ | src/spesh/plugin.c Add facts to attributes in spesh plugin guards So that if we do chained attribute lookups, then we'll be able to lower those in the chain. |
13:46 | |
MoarVM: 7ac0610922 | (Jonathan Worthington)++ | src/spesh/plugin.c Correct a mis-placed `break` statement Which caused us to sometimes spit out a bogus guard, and thus deopt when we shouldn't have. |
|||
jnthn | That last one was confusing. "Why does this spesh plugin make things waay slower?!" :) | ||
13:51
scovit joined
14:00
zakharyas left
14:09
brrt joined
|
|||
jnthn | The spesh plugins seem to be working overall quite nicely by this point. | 14:52 | |
However, switching assignment to be done in terms of MoarVM bytecode rather than C code makes us very dependent on inlining. | 14:53 | ||
And there's some cases where the order of producing stuff heuristic leaves us with nothing to inline | 14:54 | ||
So I think my next task is making it so if we know the target of a call but have no optimized candidate for it yet, then we produce one and try to inline it. | |||
(If the code size is small enough) | |||
That aside, it's nice to start seeing all the binds and checks going on expressed in the bytecode, not hidden away in chunks of C code | 14:57 | ||
brrt | yes, yes, yes | 15:12 | |
oh there's two more thoughts that I wanted to discuss | 15:13 | ||
one. we're running out of opcode space, as in, extops start at 1024, and we're at 870 or so | |||
(it would be interesting to graph) | 15:14 | ||
jnthn | Don't think they grow fast enough for that to be a problem, tbh. | ||
brrt | two, maybe there is a systematic way in which we can make 'dependent' spesh candidates, rather than relying on order-of-processing | 15:15 | |
jnthn | Given that we're already keen to eliminate ext ops | ||
brrt | :-) | ||
jnthn | Yes, there probably is a way to be cleverer, but we'll still want to produce inlines for things that are used in highly type-variant wys | 15:16 | |
*ways | |||
But that specialize nicely once inlined | |||
Geth | MoarVM: af455397f0 | (Jonathan Worthington)++ | src/spesh/optimize.c Refactor inline logging; detect missed inlines Missed being those where we could potentially do an inline, but we do not do so because we didn't specialize them yet. |
15:17 | |
jnthn | That at least lets me see that it is a problem :) | ||
brrt | you'd want to extrapolate spesh facts from the inliner to the inlinee (we can probably do that now) | ||
jnthn | Yup | 15:18 | |
15:21
zakharyas joined
|
|||
brrt | fwiw, I still haven't dropped the whole 'trace specialization' idea :-) | 15:35 | |
but I think I can frame it in a way that it fits MoarVM and spesh rather than the other way arround | |||
and hopefully relatively cheap to implement | 15:36 | ||
jnthn | Sounds interesting :) | ||
brrt | :-) | 15:38 | |
on the other hand, so many broken stuffs to fix left :-( | |||
jnthn | Yeah, and the code we're producing after specialization is still full of stuff it'd be nice to be rid of | 15:42 | |
After I've done the thing I described a moment ago, I think it'll be time for a revisit of deopt | |||
timotimo | jnthn, how detailed would you want deopt logging in the profiler to become, once we log more than just the count of deopts? | 15:43 | |
yoleaux | 14:53Z <Zoffix> timotimo: this segafauls, in case you're interested: ./perl6 --profile --profile-filename=prof.html -e 'say "127.0.0.1" ~~ /^ [ <{0..255}> ]**4 % \. $/; say now - ENTER now' R#2013 | 15:44 | |
synopsebot | R#2013 [open]: github.com/rakudo/rakudo/issues/2013 [SEGV][perf] Very slow regex | ||
jnthn | timotimo: If we can cheaply figure out what kind of guard failed, I guess it's nice, though I dunno if we can | ||
e.g. "Expected type X but got Y" | 15:45 | ||
timotimo | add a profiler version of every guard op, so we don't have to put an "if is profiling" check in every deopt function ... :\ | ||
jnthn | Just insert a "the last guard is" op before every guard :) | 15:50 | |
When profiling | |||
Oh, though I guess that still needs checking | 15:51 | ||
Though given the overall cost of deopt...I don't think a "are we profiling" check in there will amount to much cost | |||
brrt | oh, you know what does need a revision... the code in exception that does the throwpayloadlexcaller | 15:53 | |
16:08
zakharyas left
16:18
robertle left
16:21
domidumont left
16:22
zakharyas joined
16:38
zakharyas left
16:44
MasterDuke joined
16:46
lizmat joined
17:21
brrt left
17:28
zakharyas joined
17:37
domidumont joined
17:55
zakharyas left
18:31
brrt joined,
brrt left
|
|||
japhb | jnthn: How far do you think you are from merging back to master? What with all the jit templates and such, I'm wondering if a bump is in order, or if we should wait for you to merge ... | 18:42 | |
18:51
domidumont left
18:56
kanopis joined
19:16
kanopis left
|
|||
dogbert17 | I haven't seen this before: Bytecode validation error at offset 84, instruction 13: operand type 152 does not match register type 24 | 19:25 | |
got this with 'MoarVM version 2018.06-103-gaf45539' when running: MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 ./perl6 t/spec/S02-types/native.rakudo.moar | 19:28 | ||
19:29
lizmat left
19:33
zakharyas joined
|
|||
dogbert17 | ==20533== Conditional jump or move depends on uninitialised value(s) | 19:34 | |
==20533== at 0x11CC2248: ??? | |||
==20533== by 0x51C995A: MVM_jit_code_enter (interface.c:24) | |||
MasterDuke | dogbert17: can you repro it with the jit(s) disabled? | 19:37 | |
19:39
lizmat joined
19:46
lizmat left
|
|||
dogbert17 | MasterDuke: no, it disappears if I add MVM_JIT_DISABLE=1 | 19:49 | |
MasterDuke | what about MVM_JIT_EXPR_DISABLE=1 ? | 19:50 | |
dogbert17 | with MVM_JIT_EXPR_DISABLE=1 MVM_SPESH_NODELAY=1 MVM_SPESH_BLOCKING=1 the problem remains | 19:52 | |
MasterDuke | timotimo: have you looked at github.com/rakudo/rakudo/issues/2013 ? with MVM_SPESH_INLINE_DISABLE=1 it does create a 2.1mb profile, but the most expensive routine (symbol gen/moar/stage2/QASTNode.nqp:936) is only 850ms, which seems odd | 19:53 | |
dogbert17: wonder if it's related to github.com/MoarVM/MoarVM/issues/862 ? | 19:54 | ||
dogbert17 is watching soccer atm, looks as if the game between England and Colombia might go to overtime | 19:55 | ||
jnthn is probably fuming right now | 19:58 | ||
moritz | that was... close :-) | 20:06 | |
20:54
AlexDaniel joined
20:58
zakharyas left
|
|||
jnthn | Can't believe England won a penalty shootout. :P | 21:15 | |
21:16
Kaiepi joined
|
|||
AlexDaniel | squashable6: next | 21:16 | |
squashable6 | AlexDaniel, ā š Next SQUASHathon in 2 days and ā12 hours (2018-07-07 UTC-12āUTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day | ||
stmuk_ | jnthn: its some strange alternate time line | 21:20 | |
jnthn | japhb: My branch is in Rakudo, rather than here. In terms of how close: I could in theory polish the branch up in terms of correctness, sort out the JVM regression still to go, and merge. And we'd get a performance regression to go with it. | ||
japhb: Scalar is at the heart of most things, and a bunch of stuff now needs to be re-tuned for the new model. Things that hadn't used to matter so much now matter more. | 21:22 | ||
japhb: I've decided to deal with the most pressing aspect of that, then get the branch ready for merge. | 21:23 | ||
japhb | Oh sure, that wasn't pressure. That was just wondering if a bump was in order to catch NQP/Rakudo up with current MoarVM, or if you were about to merge everything and make such a bump moot. Turns out the mootness goes the other way, since you're not merging here. :-) | 22:04 | |
jnthn | Well, may be worth a bump, though my couple of perf fixes in MoarVM today probably only toouch code paths that the new Scalar stuff uses | 22:44 | |
(Of course, lots of others have done lots of other stuff :)) | 22:58 | ||
MasterDuke | it's been almost a week since the last bump | ||
jnthn | Feel free to do one :) | 23:04 | |
MasterDuke | oooh, an opportunity to use my new rakudo commit bit | 23:12 | |
AlexDaniel | yes :) | 23:15 | |
MasterDuke is just double-checking that things build ok | |||
jnthn | AlexDaniel: A quick heads up: the master branch of Rakudo has a long-standing bug where a Proxy was not decont'd in places it should have been (when returned from a non is rw / is raw sub/method). This caught a couple of busted things in Rakudo's source and there's also some spectests that were wrong. I suspect we'll have a little ecosystem fallout. | 23:17 | |
oops, *Fixing this caught | |||
Well, if we just ship the fix we will. | 23:19 | ||
It's probably possible to put in a bug-compat hack if we gotta. | |||
23:19
Kaiepi left
|
|||
timotimo | just for one release or until 6.d? | 23:20 | |
23:21
Kaiepi joined
|
|||
jnthn | Dunno. Probably we'll have to see what the fallout is. | 23:21 | |
I suspect our ecosystem is too big for it to be zero. | 23:22 | ||
AlexDaniel | jnthn: thanks. OK, we'll see where we stand after a toaster run | 23:24 | |
jnthn | Yeah, I think that'll be best | ||
AlexDaniel | I'd do it next week if nobody beats me to it | 23:26 | |
jnthn | OK. I aim to merge later this week. | ||
Though the stuff I'll work on tomorrow has risks of being tricker than I'm hoping it will be. | 23:27 | ||
Is this a Star release? | |||
AlexDaniel | huggable: star | 23:28 | |
huggable | AlexDaniel, Estimated Rakudo Star releases: .01, .04, .07 & .10 | ||
AlexDaniel | yes | ||
jnthn | Hm, ok. | ||
How easy is it to toaster a branch? | 23:29 | ||
AlexDaniel | just as easy as toasting master | ||
jnthn | OK. I wonder if it'd be wise to do that and understand the fallout before merge. | ||
releasable6: status | |||
releasable6 | jnthn, Next release in ā17 days and ā19 hours. 1 blocker. 0 out of 64 commits logged | 23:30 | |
jnthn, Details: gist.github.com/a1d05b8caf8f7c3fa4...1324c07288 | |||
jnthn | Ah, 17 days is quite a while | ||
That's enough time to deal with fallout. | |||
(Of my changes in general) | 23:31 | ||
AlexDaniel | uh, not exactly | ||
ugexe++ pointed out an issue some time ago | |||
thing is, most users don't upgrade their modules when they upgrade their rakudo | |||
so ideally we should give it some time to preseed fixed modules | 23:32 | ||
jnthn | Ah, to be clear: I meant fallout of things my branch breaks that I *don't* know about. | ||
Which would almost certainly be things that I just need to fix. | |||
AlexDaniel | right | ||
jnthn | That's separate from the intended/desired behavior change issue I mentioned earlier. | ||
greppable6: Proxy | 23:33 | ||
greppable6 | jnthn, 359 lines, 69 modules: gist.github.com/40efe0efabcc0daba4...7ccb891cb6 | ||
jnthn | greppable6: Proxy.new | 23:34 | |
greppable6 | jnthn, 163 lines, 48 modules: gist.github.com/ae3074335fdc72a467...4022571e87 | ||
jnthn | greppable6: help | 23:35 | |
greppable6 | jnthn, Like this: greppable6: password # See wiki for more examples: github.com/perl6/whateverable/wiki/Greppable | ||
jnthn | Aww, I can't ask for n lines of context :) | ||
AlexDaniel | oh!! That would be so cool! | ||
jnthn | Very, then for most cases I could just look at the report and see if the Proxy is used inside of a sub or method that's not marked rw/raw :) | 23:36 | |
AlexDaniel | how come I didn't think about it, ack/grep is useless without it | ||
jnthn | It's already really nice to be able to grep all the known modules :) | 23:37 | |
AlexDaniel | github.com/perl6/whateverable/issues/335 :) | ||
AlexDaniel sadly looks at 229 issues | 23:38 | ||
jnthn | Issues just mean somebody cares about it :) | 23:49 | |
'night o/ | 23:58 |