samcv | anyway actually probably file is gonna end up smaller (i hope) since i'm going to de-duplicate property values | 02:07 | |
and should allow more caching too, since characters with the same set of properties will refer to the same memory location | |||
it… works. nice | 02:34 | ||
now to try it out with a full build | |||
i almost thought it was broken… but there's only so many permutations of property values. and it seemed to check for a few random characters. so | 02:46 | ||
just made a really small bitfield | |||
02:48
ilbot3 joined
|
|||
samcv | and also due to this, potentially the lookup table where we go front codepoints to where the index in the bitfield is, can be much less wide, further decreasing memory requirements | 03:19 | |
so say there's 200 permutations of property values, we only need to fill this struct that contains all of the codepoints with not very wide unsigned integers | 03:20 | ||
diakopter | samcv: yes that kind of value sharing is a good idea :) | 04:26 | |
I think I measured how many different combinations there were a few years ago; ISTR it was in the thousands | 04:27 | ||
of course they could be grouped for better compression | 04:28 | ||
samcv | and some of them are derived so we can derive them if it's not too much work | 04:29 | |
diakopter | wait, now ISTR ucd2pc already did that kind of sharing | 04:31 | |
2c | |||
samcv | possibly | 04:32 | |
diakopter | I'll admit, the script isn't ultra perspicuous | ||
samcv | yeah i think it dqoes | ||
so far i'm up to 38 properties and so far it takes 8.7K compiled so that's not too shabby | 05:12 | ||
it does take a quite a while to do its think tho ;) | |||
05:22
vendethiel joined
06:40
geekosaur joined
|
|||
timotimo | man, sure would have loved to catch some Zs that night … | 07:14 | |
pahole finds a few bytes here and there that could be saved by rearranging some structs, i'll do that soon, because i need to get back into coding :| | 07:18 | ||
07:19
domidumont joined
|
|||
Geth | arVM/pahole2017: 5 commits pushed by timo++ | 08:12 | |
arVM: timo++ created pull request #503: Save a tiny bit of space in 6 of our structs |
08:14 | ||
08:17
zakharyas joined
|
|||
Geth | arVM/multi_cache_no_segfault_on_null: c415e048da | (Timo Paulssen)++ | src/6model/reprs/MVMMultiCache.c multi cache shall not asplode when it finds a null argument |
09:22 | |
timotimo | ^- broken actually | 09:23 | |
will re-push | 09:24 | ||
Geth | arVM/multi_cache_no_segfault_on_null: ef4d0db2ab | (Timo Paulssen)++ | src/6model/reprs/MVMMultiCache.c multi cache shall not asplode when it finds a null argument |
||
lizmat | timotimo: won't that slow down things a lot ? | 09:31 | |
timotimo | you think? | ||
lizmat | *I* don't know :-) | 09:32 | |
timotimo | how do you figure? | ||
lizmat | hence my question | ||
timotimo | because we refuse to cache some cases now? | ||
hm. i suppose it could only refuse to cache when it's a low-level null and accept VMNull | 09:33 | ||
Geth | arVM/multi_cache_no_segfault_on_null: 6c21cbb36a | (Timo Paulssen)++ | src/6model/reprs/MVMMultiCache.c let multi_cache_add survive null args |
09:34 | |
arVM/multi_cache_no_segfault_on_null: 94bdf23444 | (Timo Paulssen)++ | src/6model/reprs/MVMMultiCache.c we may want to only refuse to work with low-level nulls. |
|||
timotimo | if you hit this code path that makes it refuse to take from, or add to the cache, it would just have segfaulted previously | 09:35 | |
09:41
domidumont joined
09:45
domidumont1 joined
10:35
domidumont joined
|
|||
Geth | arVM/multi_cache_no_segfault_on_null: d7e5fdd7c0 | (Timo Paulssen)++ | src/core/frame.c liz' code managed to get this to segfault, so guard it |
10:37 | |
arVM: timo++ created pull request #504: Multi cache no segfault on null |
10:38 | ||
10:50
domidumont joined
12:39
brrt joined
13:23
domidumont joined
13:24
domidumont joined
|
|||
brrt | good * #moarvm | 14:31 | |
jnthn | o/ brrt | 15:07 | |
brrt | \p jnthn | 15:08 | |
i've made reverse progress with writing a blog article about register allocation :-( | 15:13 | ||
the good news is, though, i do kind of know how to implement the argument-list handler | 15:14 | ||
the annoying bit about that | 15:17 | ||
i had originally envisioned the ability to 'swap' registers between live ranges | |||
but that is not generally possible | |||
as it might introduce conflicts | |||
16:02
Ven joined
16:18
Ven joined
16:22
synopsebot6 joined
|
|||
ilmari grmbles at uses of sizeof(char) | 16:24 | ||
timotimo | oh, is there something wrong with that? | ||
ilmari | it's by defintion 1 | 16:25 | |
if you're being that paranoid you should be using CHAR_BITS instead of "8" for repr_data->bits as well | |||
which is only 8 by POSIX definition, not C | |||
(by virtue of stdint.h's int8_t) | 16:26 | ||
16:33
Ven joined
|
|||
timotimo | mhm | 16:39 | |
we use MVMint8 and MVMuint8 a bunch | |||
16:46
brrt joined
16:51
Ven joined
17:03
Geth joined
17:11
Ven joined
17:12
ggoebel joined
17:20
FROGGS joined
17:31
Ven joined
17:51
domidumont joined
18:03
Ven joined
18:24
Ven joined
18:33
Ven joined
19:04
Ven joined
|
|||
dogbert17 | o/ | 19:09 | |
timotimo, jnthn: ok what do you think about this gist, is it better? gist.github.com/dogbert17/8d728478...ea4269da38 | 19:10 | ||
19:46
domidumont joined
20:05
Ven joined
20:24
vendethiel- joined,
Ven joined
20:39
Ven joined
20:49
Ven joined
21:06
Ven joined
21:26
Ven joined
|
|||
timotimo | um ... use after free even though we use the safepoint mechanism? | 21:39 | |
21:46
Ven joined
|
|||
timotimo | it's specifically designed to make use-after-free impossible :) | 21:53 | |
jnthn | Hmm | 21:55 | |
dogbert17: yes, interesting | |||
dogbert17 | I could add the gist as a comment to MoarVM #458 if that's convenient | 22:03 | |
jnthn | Please do | 22:05 | |
jnthn has a bit of a headache at the moment so can't be particularly useful :( | |||
22:06
Ven joined
|
|||
dogbert17 | done | 22:09 | |
22:25
Ven joined
22:45
Ven joined
23:05
Ven joined
23:26
Ven joined
23:36
Ven joined
23:50
Ven joined
|