github.com/moarvm/moarvm | IRC logs at colabti.org/irclogger/irclogger_logs/moarvm
Set by AlexDaniel on 12 June 2018.
01:34 AlexDaniel left 01:35 AlexDani` joined 01:46 AlexDani` is now known as AlexDaniel, AlexDaniel left, AlexDaniel joined 03:06 yoleaux joined 06:24 brrt joined
brrt good * 06:25
nwc10 good *, brrt
brrt ohai nwc10 06:33
I'm... a little disoriented, as in, 'what's next'
now that the floating point thing is done :-) 06:34
06:34 domidumont joined
brrt I can.... try to implement general register requirements 06:34
I could also continue on the tree-based optimizer. 06:35
But, I could also move forwards with the intended refactor to linear form
(the one thing that I haven't quite figured out just yet, is how to do cheap modification of a linear form 06:36
nwc10 which one makes it easiest for other people to help? which one delivers speed benefits earliest? which one helps *you* earliest? 06:38
and is the ranking different for each question? :-)
06:46 brrt left 07:03 brrt joined
brrt nwc10: general register requirements is probably most functionally important, because it'd mean that we can increase the range of opcodes supported by the expr JIT 07:04
my goal here is still to deprecate the lego JIT in favor of the expr JIT 07:05
so... the more that *can* be done by the expr JIT, the better
the linearization will, I think, allow the JIT to handle whole routines, rather than just basic blocks. That in turn will simplify the rest of the JIT 07:06
07:16 patrickb joined 07:55 zakharyas joined 08:33 domidumont left, sena_kun joined 08:37 domidumont joined 09:38 brrt left 10:03 MasterDuke left, domidumont left 11:16 zakharyas1 joined, zakharyas1 left 11:17 zakharyas left
timotimo brrt, i'd love optimizer / repr integration, and the ability to devirtualize in the expr jit 11:50
11:51 ugexex joined 11:56 ugexe left 12:01 BinGOs joined, kawaii joined 12:04 domidumont joined 12:05 brrt joined
brrt timotimo: noted 12:19
timotimo so that going from template jit to expr jit doesn't potentially make things worse in that way :) 12:20
today i can go figure out why the F the sqlite files the profiler spits out suddenly have their unique constraints blown up 12:22
brrt would you prefer to use templates, or do you think it'd be reasonable to 'hand-write' trees? 12:33
timotimo depends entirely on what that entails :) 12:34
brrt well, building by hand means computing reference offsets, for one thing 12:43
timotimo that could be terrible, or it could be merely a little nuisance, depending on how you do that :) 12:44
13:01 zakharyas joined 13:02 pamplemousse joined
brrt I find it not so difficult 13:07
but then again, I'm not representative
ohai pamplemousse 13:19
what's next :-)
pamplemousse Hi brrt :) 13:29
Right now I'm working on my simplified version of the eval function
brrt Cool... where do you want that functionality to be merged into? 13:30
pamplemousse The code to add the commandline option and eval could go either in rakudo/src/main.nqp or in nqp/src/HLL/Compiler.nqp. I'm currently doing them in the NQP repo and adding support for the MoarVM backend through the existing interfaces 13:40
timotimo oh, maybe now would be a good time to point you at App::MoarVM::Debug, which lets you step through nqp and perl6 code line by line - though the CLI is really a little strange 13:44
13:46 ugexex is now known as ugexe
pamplemousse That looks like it will be really helpful, thanks 13:47
timotimo the commands for the shell it offers really need a rewrite 13:48
13:50 brrt left 14:12 brrt joined 14:27 lucasb joined 14:31 sena_kun left
timotimo ok, this is upsetting 14:58
the same gc sequence number occurs multiple times in the profile
already at the moarvm level
consequently, the moarperf gc graph now has some *negative* numbers in the "time between GC runs" graph 14:59
15:02 patrickb left 15:10 sena_kun joined
jnthn Oops. 15:14
15:18 brrt left
pamplemousse jnthn: I was wondering if you have a preference for whether I should add a command line option (--bytecode or -b) enabling the explicit execution of a bytecode file or whether perl6 should implicitly check for the magic number in the first few bytes of a file. 15:22
jnthn Hm, I sort of thought maybe you'd give bytecode to `moar`, but maybe that's not really feasible given the library paths and so on... 15:43
Maybe an option is better
15:49 robertle joined 15:56 domidumont left
pamplemousse I am still essentially giving the bytecode to moar, I just have to pass it through perl6 for the library path stuff. 15:59
Alrighty, option it is
16:01 Kaiepi left
lizmat is there a chance to get MoarVM to accept bytecode from any source, not just a file ? 16:13
but also e.g. a socket ? 16:14
16:19 domidumont joined 16:23 Kaiepi joined
jnthn There's an op that can load bytecode from a buf 16:25
So "yes, but write the server bit in Perl 6" :)
16:29 brrt joined
pamplemousse Ideally, I'd like anything that can map to an IO Handle to be able to be used, but I'm still not really sure how to get to there 16:29
jnthn: Where does that op live?
jnthn In MoarVM it's called loadbytecodebuffer 16:30
Seems it's mapped to nqp::loadbytecodebuffer
pamplemousse Thanks 16:31
17:05 domidumont1 joined 17:07 domidumont left 17:18 domidumont1 left 17:19 domidumont joined 17:21 brrt left
pamplemousse I was wondering if anyone could explain what a compunit is? Is it bytecode, is it something else? I'm here: github.com/perl6/nqp/blob/master/s...r.nqp#L178 and tracked the definition of that function/op to here: github.com/MoarVM/MoarVM/blob/mast...rp.c#L3274 and am struggling a bit. 17:21
It's touched on in the Rakudo/NQP Internals course but I still don't really get what it is that is being handed to compunitmainline
17:29 zakharyas left
timotimo pamplemousse: compunit is simply "one unit of compilation" 17:47
every time one compilation happens, one compunit falls out 17:48
compunitmainline lets you get the code "at the root" of the compunit so to speak
think of it as "frame 0" or something, where frames are individually invokable pieces of code with a name and set of lexicals and locals, as well as an "outer" frame 17:49
a compunit usually also comes with its own serialization context, but i'm not sure what the exact relation is. i think it's 1:1 17:50
pamplemousse So is the compilation unit that is generated when the source program is compiled bytecode? 17:53
And compunitmainline gets you to the instruction at "frame 0"?
timotimo i think the mast compiler writes out the bytecode file, and a bytecode file (which also includes the serialized blob, i.e. the serialization context) is that compunit 17:55
17:56 domidumont left
pamplemousse Okay, I think I follow. Thanks timotimo++ 18:01
18:08 AlexDaniel left 18:28 sena_kun left, sena_kun joined 18:32 AlexDaniel joined, pamplemousse left 18:36 sena_kun left 18:37 AlexDaniel left 18:40 pamplemousse joined 18:44 pamplemousse left 18:47 zakharyas joined 19:16 lucasb left 19:24 sena_kun joined 19:27 brrt joined 19:32 MasterDuke joined 20:19 brrt left 21:00 Kaiepi left 21:10 Kaiepi joined 21:17 zakharyas left 21:47 nebuchadnezzar left 21:59 AlexDaniel joined 22:46 sena_kun left 23:13 Kaiepi left, Kaypie joined