|
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* | |||