|
00:03
Geth joined
00:19
stmuk joined
01:07
Voldenet joined
01:13
stmuk_ joined
01:49
ilbot3 joined
03:16
eater joined
|
|||
| MasterDuke_ | m: my $a = "a" x 2**30; | 03:28 | |
| camelia | ( no output ) | ||
| MasterDuke_ | m: my $a = "a" x 2**31; | ||
| camelia | repeat count > 1073741824 arbitrarily unsupported... in block <unit> at <tmp> line 1 |
||
| MasterDuke_ | m: my $a = "a" x 2**30; my $b = $a x 2**30 | 03:29 | |
| camelia | Can't repeat string, required number of graphemes 1152921504606846976 > max allowed of 4294967295 in block <unit> at <tmp> line 1 |
||
| MasterDuke_ | given that we now have the error about required greater than max, couldn't we remove the arbitrary limit on x? | ||
|
05:30
cantstanya joined
05:41
brrt joined
|
|||
| brrt | good *, #moarvm | 05:42 | |
|
05:44
nwc10 joined
|
|||
| samcv | good * | 05:56 | |
| brrt | ohai samcv | 05:59 | |
| how are you this morning | |||
| samcv | well | 06:00 | |
| brrt | wait, it's not at all morning for you | 06:08 | |
| did you get to see my blog post? | |||
|
07:15
brrt joined
|
|||
| samcv | i have not yet | 07:49 | |
| looking in a sec | |||
| i'm working on a SPDX -license identifier parser using grammars | 07:53 | ||
|
07:53
brrt joined
|
|||
| samcv | finally passing more than a few of my tests. finally :) | 07:54 | |
| brrt | \o/ | 07:55 | |
| hmm, sp_p6obind_o does work if i remove the redundant let: | 07:56 | ||
| that's odd | |||
| samcv | sp == spesh? | ||
| brrt | yes | 07:59 | |
| it's an instruction that is inserted by spesh if it can prove the layout of an object | |||
| so that we don't have to do dynamic dispatch | |||
| samcv | oo | 08:02 | |
| brrt | it requires a write barrier, which makes it relatively complex | 08:06 | |
| so it's a good test for the JIT | |||
| yesterday i had one implementation that consistently blew up in a weird way | |||
| now i've changed that in what should be an equivalent way, and now it doesn't blow up anymore | |||
| samcv | so there's something that you aren't seeing i guess is the point right | 08:12 | |
| reading your post now :-) | 08:13 | ||
| .tell brrt very cool post | 08:23 | ||
| yoleaux | samcv: I'll pass your message to brrt. | ||
|
08:30
brrt joined
08:47
Ven joined
09:22
Ven joined
09:26
Ven_ joined
10:19
Ven joined
10:31
brrt joined
10:32
brrt1 joined
|
|||
| jnthn | brrt1: Great post! One typo: "That is very inconvenience" | 10:56 | |
| brrt1 | oh, thanks, i'll fix it :-) | 10:57 | |
|
11:01
brrt joined
|
|||
| brrt | fixed :-) | 11:10 | |
| yoleaux | 08:23Z <samcv> brrt: very cool post | ||
| brrt | thx samcv | ||
|
11:15
Ven_ joined
11:34
Ven joined
11:41
AlexDaniel joined
11:47
brrt joined
12:40
zakharyas joined
|
|||
| brrt | oh wow, all sorts of stuff goes wrong with the compilation of sp_p6bind_o | 12:47 | |
| that's interesting... | 12:48 | ||
| timotimo | i only saw sp_p6oget_o in the blog post, though :P | 12:51 | |
| brrt | yeah, i was experimenting with sp_p6obind yesterday afternoon | 12:52 | |
| timotimo | mhm | 12:53 | |
| brrt | it currently has this redundant let expression. with the let expression, it breaks grandly. without it, it works | ||
| (it's redundant because there is just a single ref) | |||
| i'm wondering what the 'working' version looks like, though | 12:55 | ||
| timotimo | good thing we have a whole bunch of different debug outputs at our disposal :P | 12:56 | |
| i was chasing a bug that 100% stumped me the day before yesterday, and i felt that gdb in moarvm still needs much improved :| | |||
| brrt | always room for improvement | 13:00 | |
| timotimo | right | ||
|
13:07
zakharyas joined
|
|||
| nine | Is there a way to initiate dumping a heap snapshot from within MoarVM so I could use the heap analyzer to find out where an object is referenced from? | 13:20 | |
| In a place where we'd otherwise just throw an exception | |||
| timotimo | the heap snapshot tool depends on a piece of perl6 code to run :\ | ||
|
14:29
TimToady joined
14:41
ggoebel joined
|
|||
| jnthn | nine: It takes a snapshot each time a GC happens, so just trigger GC | 14:54 | |
| (nqp::force_gc or so) | |||
| Uh, or if you're inside of MoarVM then just call MVM_gc_enter_from_allocator(tc) or so | 14:55 | ||
| MasterDuke_ | jnthn: what do you think about removing the arbitrary limit on string repeats since we now check that the resulting string wouldn't be too long anyway? | 14:57 | |
| jnthn | MasterDuke_: Well, we need to make sure that the repetition count in the strand will work out also | 14:58 | |
| MasterDuke_ | is that what `STRAND_CHECK(tc, result);` does? | 15:00 | |
| jnthn | No, there's a field that holds the repeat count | ||
| Which I think is a 32-bit value | 15:01 | ||
| MasterDuke_ | ah. `result->body.storage.strands[0].repetitions = count - 1;` this need to be correct? | ||
| jnthn | Yes | ||
| So we need a bound check | 15:02 | ||
| MasterDuke_ | `MVMuint32 repetitions;` in struct MVMStringStrand | ||
| jnthn | Right, so is the range check we're doing for soemthing smaller than we can fit in there? | 15:03 | |
| We need one, but if it's for a smaller value then there's little need for that. | |||
| nine | jnthn: I guess moarvm only writes the heap profile file in an orderly exit? | ||
| MasterDuke_ | `repeat count > 1073741824 arbitrarily unsupported...` | ||
| jnthn: repetitions and num_graphs are both MVMuint32, so we should be good | 15:05 | ||
| jnthn | nine: Yeah, well, actually it forms a string that is then written back in NQP land | ||
| m: say 1 +< 32 | 15:06 | ||
| camelia | 4294967296 | ||
| timotimo | oh, really? i was convinced we were assembling the data in nqp land from an array or something | ||
| jnthn | Hmm | ||
| timotimo | well, convinced is a bit much | ||
| jnthn | Most of the concat is done in C land at least | ||
| MasterDuke_ | m: my $a = "a" x 2**31; | 15:07 | |
| camelia | repeat count > 1073741824 arbitrarily unsupported... in block <unit> at <tmp> line 1 |
||
| MasterDuke_ | m: my $a = "a" x 2**30; my $b = $a x 2**30 | ||
| camelia | Can't repeat string, required number of graphemes 1152921504606846976 > max allowed of 4294967295 in block <unit> at <tmp> line 1 |
||
|
15:07
brrt joined
|
|||
| timotimo | jnthn is right | 15:07 | |
| jnthn | So it shouldn't be too much code to write a C function that dumps it out | 15:08 | |
| MasterDuke_ | jnthn: i'll create a PR to increase that repeat count limit, but feel free to reject | 15:11 | |
| nine | I tried just catching the exception, but still don't get a profile written. | 15:15 | |
|
15:17
domidumont joined
|
|||
| brrt | i wonder if it's time to start writing the optimizer | 15:20 | |
| jnthn | brrt: For the JIT? :) | ||
| brrt | yes | ||
| timotimo | yes! always optimize! :D | ||
| brrt | hehe | 15:21 | |
| jnthn | Maybe would be better to aim for merging it/enabling it by default first? :) | ||
| timotimo | yeah, probably | ||
| brrt | yeah, probably | ||
| hmm | |||
| i'm missing the stuff in arglist, it seems | |||
| jnthn | I mean, the better quality code should already get us some speedups? | ||
| brrt | well, some of the code is decidedly worse | ||
| okay, i've discovered what is wrong about the codegen, but not why | 15:23 | ||
| (of sp_p6obind_o) | |||
| timotimo | how much worse? | ||
| do you have some examples? :) | 15:24 | ||
| brrt | ehm, sure | 15:26 | |
| timotimo | also: good post | 15:27 | |
| brrt | ty | 15:29 | |
| gist.github.com/bdw/1f5a6c07e8db33...d8c9fa329d | 15:32 | ||
| the reason is that the tiling doesn't pick the 'optimal' choice, whihc is a cost issue i think | |||
| timotimo | now you're comparing exprjit vs hand-written, i thought we were going to compare template jit vs expr jit | 15:34 | |
| brrt | well, the template jit is hand-written code | 15:36 | |
| for segments like these (write barrier) | |||
| and that is its strength | |||
| timotimo | ah | 15:45 | |
| brrt | i've found my bug | 15:46 | |
| i don't run special-tile code for stuff after the last live range start | 15:47 | ||
| timotimo | that'll cause p6obind_o to work better? | ||
| brrt | i hope | 15:50 | |
| yes | |||
| [Coke] | so, not knowing where this project is, status wise - how close are we to a new jit? | 15:52 | |
| brrt | hmm, i want to expand with a very complete answer | 15:54 | |
| the short answer is 'pretty close, but i don't know a good timeframe, since i'm time-limited' | 15:55 | ||
| the complete answer includes: note that the new jit is actually embedded in the old one | |||
| and relies - for so long as that is reasonable - on the old jit to handle some particularly nasty stuff (e.g. exceptions) | 15:56 | ||
| that can be done by the expr jit eventually as well, but i'm in no hurry | |||
| [Coke] | OK. are you at a point where having more hands would be helpful? | ||
| brrt | almost | 15:59 | |
| :-) | |||
| i'm nailing down the final pieces of mechanism | |||
| Geth | MoarVM/even-moar-jit: e1529f462c | (Bart Wiegmans)++ | src/jit/linear_scan.c Make sure we run 'special tile' code after last live range If we don't, we can miss ARGLIST argument setup and other essentials. This would break a write-barrier case in sp_p6obind_o. |
||
| [Coke] | sweet. well, let us know. thanks for keeping at it. | 16:01 | |
|
16:33
Ven joined,
nebuchad` joined
|
|||
| Geth | MoarVM/even-moar-jit: 7a631fb7f2 | (Bart Wiegmans)++ | 2 files Take requirement handling out of loop So that we don't have to duplicate it, just the call. Also, enable sp_p6obind_o, and watch it not burn. |
16:36 | |
| MoarVM/even-moar-jit: 2593e26ad3 | (Bart Wiegmans)++ | src/jit/core.expr Remove 'let' in sp_p6obind_o Not necessary to have it, so let's get rid of it, it'll make the generated code simpler. |
|||
|
16:42
ilmari joined
16:59
zakharyas joined
18:42
ggoebel joined
18:48
zakharyas joined
19:49
ggoebel joined
19:57
Ven joined
20:18
Zoffix joined
20:20
Ven_ joined
20:37
geekosaur joined
21:15
geekosaur joined
|
|||