00:50 ggoebel9 joined 01:05 ggoebel joined 01:32 vendethiel joined
[Coke] finally opened a ticket to get Moarvm macport file updated, sorry for delay. 03:33
05:47 FROGGS joined
FROGGS o/ 05:59
dalek arVM: 728fa7a | FROGGS++ | build/setup.pm:
use cross-platform devnull in build script
06:03
06:22 vendethiel joined 06:51 zakharyas joined 06:57 Ven joined 07:03 brrt joined 07:04 vendethiel joined
brrt \o 07:05
FROGGS hi brrt 07:13
brrt hi FROGGS
jnthn morning o/ 07:58
FROGGS morning jnthn 08:00
brrt morning jnthn 08:01
FROGGS cries when looking at his work code... he'd like to run code in parallel in a POE worker, but that seems to be problematic in P5 08:02
JimmyZ it is easy by Inline::perl5 :P 08:03
masak FROGGS: worth a shot. I hear good things about POE.
nwc10 if your code objects to any sort of event loop or co-operation, maybe try metacpan.org/pod/Parallel::ForkManager ? 08:04
FROGGS masak: I use POE 08:05
though forking in a worker is the issue... I tried to apply this to my code but failed: poe.perl.org/?POE_Cookbook/Child_Pr...ses_Nested 08:06
my main event loop is a POE::Wheel::SocketFactory that handles http/https connections 08:07
08:07 vendethiel joined
brrt what's POE 08:10
FROGGS brrt: "POE is a Perl framework for reactive systems, cooperative multitasking, and network applications." 08:11
brrt ah
looks quite useful 08:12
ok, to give a minor update on my progress so far since last week 08:13
you can do code generation in two ways; linearly, using register management and pre-generation register allocation to get good results, *if* you're compiling for a RISC machine 08:15
that way is relatively simple, and would be a minor extension on what we currently have (at the cost of quite significant complexity), 08:16
or you can use a tree-form, and then you can compile whole expressions at a time 08:17
notably, moarvm bytecode can be seen as a linear IR
the latter format can generate much better code because it encodes relations between instructions in a way that the linear form does not 08:18
unless, of course, you treat the linear form like a tree
it was and still is my intention to use the tree form, *however* all then depends on what we still call an expression and what we do not
jnthn notes that what is a single instruction at VM level can be tree-ish at machine level...
brrt yes, exactly, that too 08:19
jnthn But that won't get us all the goodness since we want to avoid lots of the register writes
brrt to give a very simple example, suppose we try to generate an expresion from a basic block (or rather a set of expression, bear with me) 08:20
suppose the last of the operations is an addition
now in x86 i can do two things
three, actually
a): add register to register; b): add memory to register; c): add register to memory 08:21
jnthn FROGGS++ # warning is gone in Configure
FROGGS jnthn: and it wasn't even my fault :o) 08:22
(at least kinda not)
brrt now whichever is actually cheaper depends on whether the second operand is in a register (the previous code) and on whether we will want to store the write operand into memory (i.e. we know that it'll spill)
hence, the spill is also part of the expression 08:23
(whereas hopefully no spill is necessary for temporary variables)
hmm, i also have another plan 08:32
a actionable plan, i might add
maybe you recall i said something about using a string representation to map opcodes to c-calls 08:33
(that is to say, a string, pointer pair representation, with the string representing the code and the pointer the c function 08:34
)
jnthn Ah, think I vaguely remember
brrt well, one of the bigger advantages of that is that this can be used by the per-piece JIT as well as by the expression JIT 08:35
my plan (for integration at least) is:
for each basic block, first try to construct an expression 08:36
if you can't construct an expression, construct a graph of per-opcode nodes (as before)
well, if we'd have a table of conversions from opcode to function call, they can be added automatically to the expression 08:38
dalek arVM: f443ffd | FROGGS++ | src/io/procops.c:
let libuv autoquote cmd line args on windows
08:43
09:45 Ven joined 10:00 Ven joined 10:25 vendethiel joined
brrt it's quite warm here 11:06
jnthn Only a little over 20 here :) 11:08
And yays, I now have my nice dev machine, keyboard, etc. set up :)
nwc10 and coffee?
JimmyZ cherry keyboard?
jnthn It's a split keyboard...I've had it for years... 11:09
And they don't make the same model any more.
nwc10 jnthn: you're aware of obra's new crazy keyboard? www.kickstarter.com/projects/keybo...for-seriou
brrt wow 11:11
even the way they've described it
a heirloom keyboard
JimmyZ there is a camelia on the keyboard ... 11:12
which is perl6-friendly ,hahah 11:13
brrt as if in 50 year's people will be using an USB plug for their keyboard
jnthn nwc10: Yeah, saw that one. :) 11:23
brrt errand & 11:53
12:07 vendethiel joined 12:17 ggoebel joined
flussence on the one hand, that looks like the sort of keyboard I've dreamed of having... on the other, that was before I became a prolific AltGr [ab]user :D 12:25
dalek arVM: a6330f7 | jnthn++ | src/math/bigintops.c:
Add missing concreteness check on bigint ops.
12:35
jnthn And that was le SEGV 12:37
12:43 vendethiel joined 13:27 vendethiel joined 13:56 vendethiel joined 13:59 JimmyZ_ joined 14:21 Ven joined 14:22 vendethiel joined 14:35 FROGGS[mobile] joined
timotimo i wonder if it's easy to figure out during a GC run whether or not a given jit code segment has an instruction pointer or a return address point at it from any of the threads 15:54
if it's simple-ish, maybe i'll go ahead and write a "merge small jit code segments into big jit code segments" thing; though i'm not sure if there are any absolute jumps in these code segments at all that need fixing up
jnthn looks confusedly at timotimo's suggestion 15:55
timotimo i've talked about this a while back 15:56
due to having to make the jit code segments either writable or executable, we have to (potentially) waste a whole page on even the smallest pieces of bytecode we spit out 15:57
hm, though i remember now: the problem was that we had to also be able to free jit code segments 15:58
i suppose i'm just starting to feel a bit useless, what with not writing moarvm/rakudo code in a bit 16:04
so i may be jumping at straws :)
jnthn Yeah...there's probably more useful things to work at... :)
timotimo i think today i'll run a spectest and try out a few libraries to see if merge_facts_at_phi is good to be merged
jnthn ponders whether to have dinner or do more pre-comp bughunt 16:05
Ah, let's do 30 mins more, maybe I'll find it... :) 16:06
timotimo got something simple-ish you'd like me to point my eyeballs & fingers at? 16:07
jnthn Well, I dunno how simple it'll be, but there's a spesh bug exposed in rt.perl.org/Ticket/Display.html?id=125408 16:08
JimmyZ_ timotimo: engineering a compiler is a nice book, maybe we can steal some ideas from there. 16:14
timotimo ah, yeah 16:15
i looked at the spesh log and it didn't seem suspicious :\
i'll take another look
16:15 Ven joined
JimmyZ_ I saw many spesh idea from that book . 16:15
timotimo i'll try to reproduce it, that ought to help
JimmyZ_ hopes jnthn++ will push his old ea branch, he wants to learn something from there too. 😊 16:17
dalek arVM: 017d184 | jnthn++ | src/6model/6model.h:
Expose HOW accessors in API.
16:22
[Coke] .seen curisovidpoe 16:23
timotimo curtis* 16:48
alternatively: curious 16:49
17:19 FROGGS joined
FROGGS nebuchadnezzar: hi, is it possible that the reproducable build fixes are not in yet? 17:24
nebuchadnezzar: I'm just wondering because these two sites show different stats: tracker.debian.org/pkg/moarvm and packages.qa.debian.org/m/moarvm.html 17:25
18:09 ggoebel2 joined
nebuchadnezzar FROGGS: yes, the fixes are not yet commited, + Arturo ask an experimental branch on latest git to check mips build 19:16
FROGGS ahh, okay 19:17
19:30 dalek joined 19:32 TEttinger joined
timotimo turns out i didn't actually attempt to reproduce that problem 19:37
instead, i read a webcomic, cooked and ate
jnthn Food is important too :) 19:43
masak as are webcomics 19:58
21:17 FROGGS_ joined 23:38 vendethiel joined
timotimo to be fair, if i want to find some hard to crack spesh failures :\ 23:45
doesn't need to be the CArray thing
but it definitely helps that it's happened to a user rather than "just in theory if we make moar more aggressive"
agressive*