Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-08-24

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:01 timotimo yeah, that's right
00:01 dalek MoarVM/even-moar-jit: 36e4147 | timo++ | src/jit/core.expr:
00:01 dalek MoarVM/even-moar-jit: it's ^params we need, not ^args
00:01 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/36e4147a39
00:05 timotimo i wonder if i should even make a macro for FRAME, as it's so simple
00:05 timotimo oh
00:05 timotimo it'll literally just be (frame)
00:07 dalek MoarVM: 5279415 | timotimo++ | tools/parse_jitgraph.p6:
00:07 dalek MoarVM: handle INTERP_FRAME and INTERP_PARAMS
00:07 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/5279415981
00:08 timotimo and CALLER has an "aword" in its implementation in emit.dasc ... not sure if that has to be reflected in the macro for it
00:09 timotimo huh. also, FRAME uses mov, PARAMS has a -> and uses lea, but CALLER has a -> and uses mov
00:11 timotimo oh, that's because params is actually inline
00:12 timotimo in that case, i'm not 100% sure any more my implementation of ^params is correct; was the (load ...) in ^pargs equivalent to a lea instruction?
00:15 timotimo brrt, i don't yet know how to spell what MVM_JIT_REG_ADDR wants to become, so this is where i'll stop for today and go to bed
00:16 timotimo felt good to get some actual progress done for a change
01:22 vendethiel joined #moarvm
03:18 lizmat joined #moarvm
05:27 ggoebel joined #moarvm
06:48 zakharyas joined #moarvm
07:02 Ven joined #moarvm
07:41 brrt joined #moarvm
07:42 brrt good moarning
07:42 brrt i have some... profoundly mediocre news
07:42 brrt i just realised that the 'spill to stack' method will not work across invokish() ops
07:44 brrt :-(
07:44 * JimmyZ doesn't know it is good or bad news :)
07:52 brrt it's bad, bad, bad news
07:52 brrt i'm not even sure how to fix it news
07:52 brrt it sucks
07:53 brrt well, damnit, i do know how to fix it
07:53 brrt it mean creating a JIT temp space and using that rather than the stack
07:53 brrt hmm
07:54 brrt that's still not pretty but a lot better than no way to fix it
08:03 brrt bbiab, updates
08:03 brrt actually, now that i think about it, my very own temporary space also has some advantages
08:17 brrt joined #moarvm
08:17 brrt timotimo++ (just backlogging)
08:18 brrt also, aword is dynasm speak for pointer-size, i.e. ptr_sz
08:24 brrt reg_addr, in probably 100% of cases, is simply the operand itself
08:24 brrt because you use reg_addr to pass the address for something to write
08:25 brrt which means that in pretty much all cases i've seen, it's the address of the written operand
08:25 brrt which is provided to you as the $0 operand by the tree builder
08:26 brrt provided the first operand is actually a write-operand in moarvm opcode specification
09:09 arnsholt joined #moarvm
09:12 timotimo yo
09:12 brrt \o
09:16 timotimo anything much i have to change drastically in my translator code?
09:16 timotimo next thing on the to-implement list would probably be num registers/values and perhaps grabbing some constants from the moarvm headers (or perhaps i can just put them into the tree file verbatim?)
09:23 brrt if you require a constant, and it doesn't start with MVM_JIT, your best bet is the (&QUOTE) macro
09:23 brrt because that simply reproduces the argument
09:24 brrt no, it looks quite good. just that as i said (^params) takes no arg; the first list in a macro definition is not decoration, it's the argument list :-)
09:24 * brrt wonders what would happen if people regularly decorated code with ornaments
09:25 timotimo oh, duh :)
09:25 timotimo i forgot to remove that
09:26 dalek MoarVM/even-moar-jit: 6da24be | timo++ | src/jit/core.expr:
09:26 dalek MoarVM/even-moar-jit: throw out bogus argument list for ^params
09:26 dalek MoarVM/even-moar-jit: review: https://github.com/MoarVM/MoarVM/commit/6da24bed97
10:09 Ven joined #moarvm
10:51 flussence joined #moarvm
10:55 zakharyas joined #moarvm
11:07 timotimo now that i've done a tiny contribution, i'm looking forward to the first generated and runned codes even more :D
11:11 brrt :-)
11:15 brrt quite possibly heaps are still my favorite data structure
11:35 timotimo "quite possibly heaps", a probabilistic data structure
11:38 FROGGS_ joined #moarvm
11:41 brrt :-)
12:10 _itz joined #moarvm
12:13 colomon joined #moarvm
12:18 colomon joined #moarvm
12:27 zakharyas joined #moarvm
12:29 colomon joined #moarvm
12:31 colomon joined #moarvm
12:40 colomon joined #moarvm
12:59 leedo joined #moarvm
13:01 brrt joined #moarvm
13:01 timotimo i have no examples in the core.expr for num yet
13:02 timotimo do i just write (carg ... num)?
13:02 brrt yes
13:02 timotimo same for return type?
13:02 brrt yes
13:05 timotimo i don't think i really understood what you were trying to explain with regards to register addresses
13:10 timotimo https://gist.github.com/timo/afb0413f1aead980a275/revisions - looks nice, dunnit?
13:11 dalek MoarVM: f2ed167 | timotimo++ | tools/parse_jitgraph.p6:
13:11 dalek MoarVM: literal 0 shall not confuse us
13:11 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/f2ed1675e3
13:11 dalek MoarVM: 3240047 | timotimo++ | tools/parse_jitgraph.p6:
13:11 dalek MoarVM: accept num parameters and return values
13:11 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/3240047025
13:13 timotimo do we have anything like the bail statistics from the previous jit yet? to see how often we get to build chunks with the expr tree jit and how big they tend to become and what keeps them from being bigger?
13:16 brrt multiple values in a same register makes register allocation *hard*
13:16 brrt no, but it's easy to get at
13:17 brrt grep -i  'could not build an expression tree'
13:17 brrt will get you all bail-lines
13:17 brrt but one of my remaining goals is to release that restriction, that the whole basic block should be an expression tree
13:30 Peter_R joined #moarvm
13:39 zakharyas joined #moarvm
14:00 brrt joined #moarvm
14:11 timotimo joined #moarvm
14:17 colomon joined #moarvm
14:18 Ven joined #moarvm
14:30 colomon joined #moarvm
14:32 Ven joined #moarvm
14:46 pyrimidine joined #moarvm
14:47 pyrimidine joined #moarvm
14:47 pyrimidine joined #moarvm
14:48 rurban_ joined #moarvm
14:56 timotimo seems like i have to go to an earlier commit to get a compileable moarvm
14:56 timotimo could it be that you forgot to check in some file, brrt?
14:56 timotimo ./libmoar.so: undefined reference to `MVM_jit_register_free'
14:56 timotimo and such
15:03 timotimo the most common breaker of exprtree is decont when just -e 'say "hello"', which requires REG_ADDR to be handled
15:04 timotimo ah, and i have to strip the MVM_OP_ from the names that go into (template: ... ...)
15:06 timotimo when implementing the next best thing on the list, which was atpos_o i think or atkey_o or something, "ifnonnull" jumps to the top with quite a bit of lead: 151 ifnonnull vs 109 decont
15:13 timotimo https://gist.github.com/timo/afb0413f1aead980a275#file-result_of_say_hello-txt - here's the full tally after copy-pasting the whole preliminary tree output into the core.expr (and kicking out duplicates as well as trigonometric functions and sqrt)
15:21 timotimo is the length of the list in "tree roots" exactly how many instructions we're trying to build a tree out of?
15:23 timotimo longest i've seen is 9, but there's a whole lot of only 1 or 2 tree roots :S
15:47 timotimo null + set + goto; wow, the expr jit is going to optimize the F out of that!
16:03 Ven joined #moarvm
16:20 hoelzro joined #moarvm
16:38 colomon joined #moarvm
17:11 Ven joined #moarvm
17:41 Ven joined #moarvm
17:53 TEttinger joined #moarvm
18:52 * masak .oO( there's no F in either of those words... )
19:13 jnthn 3
19:13 jnthn oops
19:18 FROGGS :3
19:23 vendethiel joined #moarvm
19:25 [Coke] masak: guess we're already done, then!
19:26 masak that was easy!
19:37 Ven joined #moarvm
20:15 brrt joined #moarvm
20:16 brrt good *
20:16 FROGGS hi brrt
20:17 brrt hi FROGGS
20:18 brrt timotimo: no, did not forget to, that's just all NYI
20:18 brrt unfortunately
20:18 brrt i'm a bad developer!
20:19 timotimo don't worry :)
20:19 timotimo the branch isn't meant to be "shippable at any time!" ;)
20:20 brrt also, roots->ins map is somewhat subtle
20:20 brrt yes, roots are now added for each instruction, so that by default the instruction order is maintained
20:20 timotimo i was just asking because that'd seem like a nice number to track growth with :)
20:20 brrt no, we do not need to keep it that way
20:20 brrt yeah, it's a decent enough proxy
20:20 timotimo number of instructions per tree generated, that is
20:20 timotimo sometimes we even end up building a tree with 0 roots and nothing in it
20:21 brrt yes, i know, phi-only basic blocks
20:21 brrt weird, huh
20:21 timotimo yeah
20:22 timotimo so the expr jit tries to build a tree from the beginning of a BB and aborts when it hits something it can't do and then wait until the next BB to try again?
20:22 brrt yes. and i want ot change that to a set of consumers
20:23 brrt e.g. expr tree builder is a consumer, but args-and-invoke is also a consumer, and jumplist is also a consumer
20:23 zakharyas joined #moarvm
20:23 brrt anyway, i'll be off now
20:24 brrt i remain moderately hopeful of having a register compiler, and with that, a full fledged expr tree compiler, somewhere tomorrow or the day after that :-)
20:24 brrt and then fix the bugs
20:24 brrt see you!
20:24 jnthn brrt: Good luck with it! :)
20:24 brrt thanks :-)
20:25 brrt it's been quite frankly harder going than i had expected. but i'm making progress, albeit uncompilable :-)
20:25 brrt good luck with the SPW
20:25 * brrt now really afk :-)
21:20 pyrimidine joined #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary