01:15
colomon joined
01:27
vendethiel joined
01:47
ilbot3 joined
02:35
FROGGS joined
04:04
FROGGS_ joined
07:42
vendethiel joined
|
|||
dalek | arVM: 5b63ded | nicholas++ | src/6model/ (2 files): Bump minimum serialization format version. Now that we've rebootstrapped, we no longer need the code to read older serialization versions. Mostly a lot of removal of if statements with ...->root.version checks, and re-indenting because of the blocks this eliminates. |
08:30 | |
jnthn | Well, that's one off the review list :) | ||
08:59
vendethiel joined
09:14
vendethiel- joined
|
|||
timotimo | yay | 11:52 | |
nwc10 | jnthn++ | 13:17 | |
jnthn: I was experimenting with inlining some more (small static) functions and the numbers were noise | |||
so I went digging | |||
turns out that at -O2 *gcc* has already inlined them, because (the Internet says) it will at -O2, if $heuristics and the code size does not increase | 13:18 | ||
(-O3 gets aggresive and inlines even if code size encreases) | |||
there's more to the world than gcc, but I wasn't sure if it's worth the complexity of churning the codebase, as I assume that at least some other compilers will consider it | 13:19 | ||
15:06
zakharyas joined
|
|||
nwc10 | jnthn: do you want the bad news or the good news? :-) | 15:35 | |
OK, the bad news is 3 more commits to review. | 15:44 | ||
timotimo | i'd like the good news now, please | 15:45 | |
nwc10 | (the others you hadn't yet had time for got rebased onto master) | ||
timotimo | oh, i think the time on this device is quite off | ||
nwc10 | so when is the "now" of which you speak? :-) | ||
timotimo | well, i looked at your message and then at my clock | 15:46 | |
they were 6 minutes apar | |||
apart | |||
nwc10 | aha | ||
timotimo | so i thought you were waiting for someone to ask you to go on | ||
nwc10 | on "my" machine CORE.setting.moarvm is 11503882 bytes. | ||
timotimo | if we optimize our stuff much further, it'll end up fitting on a floppy disk | 15:47 | |
nwc10 | I was going to suggest that this was doubtful | 15:48 | |
but xz can compress CORE.setting.moarvm to 1.2M | |||
timotimo | then you remembered there's microfilm? ;) | ||
neato | 15:49 | ||
i believe we have lots and lots and lots and lots of zeroes in there | |||
nwc10 | I know where some are. I have a plan to reduce them. | ||
timotimo | i'd wager we have about 50% zero bytes | ||
nwc10 | please write JITs, because I'm not good at that :-) | ||
we can probably measure the count and therefore proportion of zero bytes | 15:50 | ||
timotimo | on my machine the core setting moarvm file is 4216599 bytes perhaps? | ||
m: say 11503882 / 4216599 | |||
camelia | rakudo-moar 0b2092: OUTPUTĀ«2.72823714ā¤Ā» | ||
timotimo | so ... you made it more than 2x as big? | 15:51 | |
haha | |||
the moarvm file starts with something like | |||
BA BA BA BA BAA BA BA BAA BA BA BAAA | |||
00e8010: 0700 0800 0800 0800 0800 0800 0800 0800 ................ | 15:53 | ||
00e8020: 0400 0800 0800 0800 0800 0800 0800 0800 ................ | |||
well, why not! | |||
%) | |||
i think we might get a bit of a size decrease if we change the way our cuids look | 15:54 | ||
all we need for them is to be unique and perhaps even recognizable as a cuid | 15:55 | ||
but "cuid_4131_1428658493.36412" is rather wasteful, IMO | |||
scrolling through the xxd of the core setting moarvm file there's pages and pages and pages and pages of cuids | 15:56 | ||
i wonder where the multiple copies of 01234567890ABCDEFG......XYZabcdefgh.......xyza... come from ... no, actually i know where they come from | 15:59 | ||
that must be our magic for SEQUENCE | |||
that'd be why it has a 0 at the end *and* beginning | |||
as well as the a after the z | |||
jnthn | We might consider doing a bump to -O3 if all looks good with it. | 16:11 | |
nwc10 | jnthn: the 3 commits on my nqp master might be much easier to review | 16:13 | |
they also act as tests for the other stuff | |||
jnthn | I sometimes wonder if we can do better than memcpy | 16:16 | |
(for reading stuff) | |||
nwc10 | I'm not sure. I think one would need to look at the assembler generated by >3 compilers on >2 architectures | 16:17 | |
to see how good they are at figuring out what is "constant" and putting something decent inline | |||
IIRC looking at the Linux headers, gcc provides enough __builtin_backdoor_foo to permit at least some things to be replaced with "oh, I know that it's 4 bytes" and a suitable bit of inline code | 16:18 | ||
dalek | arVM: 003f918 | nicholas++ | src/6model/serialization.c: Deserialization code for a new varint serialization format. Firstly, just add the new deserialisation code, to verify that we can still read v13 format correctly. b544b27 | nicholas++ | src/core/validation.c: In validation.c, inline get_info() and read_op() These are called frequently, and inlining them reduces startup CPU usage by about 0.4% |
16:20 | |
jnthn | That was 4 more :) | 16:21 | |
16:21
dalek joined
|
|||
jnthn | (3 for new varint format, 1 for toss vtable thing) | 16:21 | |
TimToady | nqp-j is build fail, possibly with a deserialization issue (something in nqp assuming moar-only?) | 16:22 | |
jnthn | Hm, none of the stuff I've been merging is in NQP, oly Moar... | ||
TimToady | I dint say it was yer falt | 16:23 | |
nwc10 | just that he gets to fix it :-) | ||
TimToady | that were implicated, aye | 16:24 | |
jnthn | the only JVM things that changed recently were about the '0' thing | ||
nwc10 | oh | 16:25 | |
TimToady | see recent #perl6 | ||
jnthn | nwc10: Where lives your NQP repo? | 16:35 | |
arVM: 72a9fff | nicholas++ | src/6model/6model.h: Re-order struct MVMCollectable to slightly reduce L1 cache misses. For "Hello World" cachegrind measures the D1 miss rate as dropping from 2.584% to 2.580% (but the LL cache misses increase slightly). |
|||
jnthn | I'll look at the rest, and nqp-j, either after dinner or tomorrow morning (got all day for Perl 6 things tomorrow) | 16:39 | |
And enjoyed the nice-enough-to-eat-outside weather sufficiently much the last couple of days I won't mind hiding from the day star to hack :) | 16:40 | ||
nwc10 | jnthn: gitlab.com/nwc10/nqp.git (if you'd not figured that out) | 16:44 | |
jnthn | I was doing lazy rather than figuring | 16:45 | |
Anyway, fetched it. But...rly dinner & | 16:50 | ||
17:06
colomon joined,
dalek joined
|
|||
timotimo | 227834 ā that's how many bytes are cuid_* strings in CORE.setting.moarvm | 21:00 | |
a quarter meg | |||
not terribly much, and it can't be reduced down to 0 | 21:02 | ||
but maybe it'd be interesting to have a little look | |||
i think i ought to have a look at the devirt reprops branch again | 21:03 | ||
21:11
vendethiel joined
|
|||
timotimo | i may be able to fix it today | 21:37 | |
oh hooray, back to segfault instead of backtrace | 21:38 | ||
there were quite a few problems with the code | 21:49 | ||
i'm going through an nqp build now | |||
it may work this time | |||
turned out that both pop and push were looking at the wrong operand for "known type" | |||
you won't get much type information out of an integer register | 21:50 | ||
All tests successful. | 21:58 | ||
ohmygosh | |||
does that mean i should merge? | |||
dalek | arVM/jit_devirtualize_reprops_3: d69f832 | timotimo++ | / (85 files): Merge branch 'master' into jit_devirtualize_reprops_3 Conflicts: src/jit/graph.c |
22:15 | |
arVM/jit_devirtualize_reprops_3: 6409021 | timotimo++ | src/jit/graph.c: sort out the last problems with reprop devirt gets us a fully clean spec test run |
|||
vendethiel | timotimo++! | 22:19 | |
timotimo | Files=969, Tests=37293, 867 wallclock secs ( 4.89 usr 1.07 sys + 678.24 cusr 71.08 csys = 755.28 CPU) | 22:34 | |
Files=969, Tests=37293, 864 wallclock secs ( 4.92 usr 1.02 sys + 675.36 cusr 71.29 csys = 752.59 CPU) | |||
hardly measurable improvement | 22:35 | ||
but at least it works | |||
i wonder if i may/should merge it into master | |||
throughout the whole rakudo build, i get this at the very top of all devirt outputs: | 22:44 | ||
18201 devirt: emitted a push_i via jgb_consume_reprop | |||
reducing the length of cuids significantly seems like a challenge; they're supposed to be unique across all time | 23:25 |