github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
00:32 dalek joined 00:33 p6bannerbot sets mode: +v dalek
Geth MoarVM: f06c695a30 | (Samantha McVey)++ | 2 files
[UNI] Make Block name lookup work for unassigned cp's

Unlike other properties which if they are unassigned go to default values, Block does not work this way. Instead of looking it up in the database, use similar code to how we check the block in other circumstances and use binary search over our Block info data structure.
... (6 more lines)
00:52
MoarVM: e17a53b870 | (Samantha McVey)++ | docs/release_guide.md
Update the release guide a bit
01:20 ilmari joined, ilmari left, ilmari joined, p6bannerbot sets mode: +v ilmari 01:21 p6bannerbot sets mode: +v ilmari 02:17 fake_space_whale left 03:23 yoleaux left 03:25 klapperl joined, p6bannerbot sets mode: +v klapperl 05:20 yoleaux joined 05:21 p6bannerbot sets mode: +v yoleaux 06:18 patrickb joined, p6bannerbot sets mode: +v patrickb 06:44 robertle joined 06:45 p6bannerbot sets mode: +v robertle 07:24 domidumont joined 07:25 p6bannerbot sets mode: +v domidumont 08:22 lizmat left 08:28 zakharyas joined 08:29 p6bannerbot sets mode: +v zakharyas 09:15 brrt joined 09:16 p6bannerbot sets mode: +v brrt
brrt \o 09:23
nwc10 o/ 09:24
09:55 brrt left 10:07 domidumont left 10:33 zakharyas1 joined 10:34 p6bannerbot sets mode: +v zakharyas1 10:36 zakharyas left 11:09 zakharyas1 left 12:05 domidumont joined 12:06 p6bannerbot sets mode: +v domidumont 12:09 domidumont left 12:11 domidumont joined, p6bannerbot sets mode: +v domidumont 12:28 brrt joined 12:29 p6bannerbot sets mode: +v brrt
brrt \o 12:30
timotimo: you mean to say that the JITted version is slower than the non-jitted version? 12:32
12:33 domidumont left 12:35 domidumont joined, p6bannerbot sets mode: +v domidumont
brrt we can easily make a trunc_i8 though 12:37
12:56 zakharyas joined 12:57 p6bannerbot sets mode: +v zakharyas 12:59 ggoebel left
brrt hmm, I may have to get sucked into improving the tiler... 13:01
bugger 13:03
well, the tiler table generator
13:07 domidumont left 13:09 domidumont joined 13:10 p6bannerbot sets mode: +v domidumont 13:15 ggoebel joined 13:16 p6bannerbot sets mode: +v ggoebel 13:19 colomon joined, p6bannerbot sets mode: +v colomon
timotimo brrt: no, the jitted version is faster, but the version without the bail is even fasterer 13:26
brrt ah, i see 13:45
I need to do a rethink on how we do tiler table generation in general, I think we can do that much better 13:46
timotimo that's a moarvm-compile-time-thing, yeah? 13:50
or does it impact the data structure we're using internally?
brrt not really, no 13:52
although I can replace my handwritten binary searches with a call to bsearch and be happier
14:00 brrt left
timotimo at the moment multiplying by 4 is almost 2x faster than left-shifting by 2 :) 14:34
we just don't have an implementation for the shl and shr ops in the jit, though 14:35
jnthn
.oO( no shift, sherlock... )
14:37
timotimo this particular benchmark is faster with Int than with int 14:38
shameful ;)
jnthn Yeah...improving the performance of code using native types is near the top of my post-vacation todo list :) 14:41
Gotta finish/give my workshop talks before I get vacation though :P
timotimo of course 14:43
:)
jnthn At least I've got a nice view while I'm writing :) 14:44
timotimo grmbl, this program gets faster if i replace the int8 arrays with regular arrays that store Int objects. though perhaps that has something to do with only using 0 and 1? 14:56
this program simulates 500 steps of an 80x80 2d cellular automaton that takes four neighbors + itself as input and has a probabilistic input in 11.25 seconds, which includes displaying it with unicode HALF BLOCK characters and reverse video, which runs in parallel to the simulation 14:59
19.53 seconds user, 177% cpu usage
that's not even bad.
i'm using an array of arrays, though, not a 2d shaped array
15:25 fake_space_whale joined 15:26 p6bannerbot sets mode: +v fake_space_whale 15:29 robertle left 15:31 patrickb left 15:53 domidumont left 16:11 fake_space_whale left 16:19 zakharyas left 16:32 zakharyas joined 16:33 p6bannerbot sets mode: +v zakharyas 16:46 robertle joined 16:47 p6bannerbot sets mode: +v robertle 16:51 MasterDuke left, brrt joined 16:52 p6bannerbot sets mode: +v brrt 17:07 domidumont joined 17:08 p6bannerbot sets mode: +v domidumont 17:31 colomon_ joined 17:32 colomon left, colomon_ is now known as colomon, p6bannerbot sets mode: +v colomon 17:46 domidumont left 17:55 zakharyas left 18:43 Kaiepi left 18:44 Kaiepi joined 18:45 p6bannerbot sets mode: +v Kaiepi 19:05 brrt left 19:23 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke 19:24 MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke
nine github.com/niner/Inline-Perl5/issues/122 is....hard 19:25
The bug is quite clear: arg_info only contains information about MAX_ARGS_FOR_OPT arguments but the getarg_i optimization/fix needs information about the corresponding argument, regardless of its number. 19:26
I guess that's what I get for implementing a fix as an optimization. An optimizer can just have arbitrary limits for cases it tries to optimize while the fix always needs to work. 19:27
19:29 zakharyas joined, p6bannerbot sets mode: +v zakharyas
nine Actually there's another bug lurking there. A getarg_i may actually be in a different basic block than the corresponding arg_i instruction. In that case arg_info may not be initialized at all. 19:30
MasterDuke has anyone else seen this? tratt.net/laurie/blog/entries/why_a...art_1.html 19:37
interesting article about language VMs and how/when they reach steady state behavior (i.e., initial interpreting -> optimizing -> running optimized code) 19:39
robertle watch 19:45
the y axis on the graphs though!
MasterDuke yeah, the HN commentary has some good points 19:47
20:03 patrickz joined
nwc10 MasterDuke: no I hadn't. It's awesome. Not that I know how to imrpove stuff based on it 20:04
20:04 p6bannerbot sets mode: +v patrickz
nwc10 but the "people weren't really sure so we ran it 10 *times* longer" (rougly) approach, and then what they found, is jaw dropping 20:05
and even the graph for "C does strange things" - because they thought to compare all the VMs with somethign that should be predictable 20:06
it all seems very thorough
20:06 robertle left
Kaiepi for the async sockets fd pullreq, would it be a good idea to add an op that just initializes the socket, then have listen/connect use the socket it creates instead of initializing it on listen/connect? 20:06
i can't think of any other way to have the socket immediately available for IO::Socket::Async.listen to use 20:07
what i'm thinking is having an op like nqp::asyncsocket that returns a raw socket, which could then be passed to nqp::asyncconnect and nqp::asynclisten, but that's a breaking change 20:14
and i'm not sure how you'd get the socket's struct to get cleaned up after freeing the structs listen/connect use 20:15
Geth MoarVM: 2fb3265a18 | (Stefan Seifert)++ | src/spesh/optimize.c
Fix segfault of native subs with more than 8 arguments

arg_info only contains information about MAX_ARGS_FOR_OPT arguments but the getarg_i optimization/fix needs information about the corresponding argument, regardless of its number. Instead of relying on other optimizations, just look backwards for the corresponding arg_i instruction.
Fixes github.com/niner/Inline-Perl5/issues/122
20:23
[Coke] reading MasterDuke's page there; I've seen jnthn measure actual CPU ops rather than trying to lock down all variables; seems like that's a much easier data point to get and have a high confidence level on. 20:24
nine Not perfect, but this'll do for now as I'm heading to bed and will be AFK all of tomorrow.
20:50 zakharyas left 21:24 brrt joined 21:25 p6bannerbot sets mode: +v brrt 21:31 brrt left 21:56 patrickz left 23:35 lizmat joined 23:36 p6bannerbot sets mode: +v lizmat 23:53 lizmat left