00:02
TimToady joined
|
|||
samcv | well that's not good. it's a synthetic (non utf-c8 synthetic though it does have a utf8-c8 synthetic later in the string) | 00:16 | |
but the issue is a normal synthetic whose first cp is: L and the second one is 0xFFFFFFF9 | |||
oops no. the second one is synthetic -7 | 00:18 | ||
got the fprintf wrong. ok so it's a synthetic with a synthetic inside it. that or corruption | |||
the results seem identical each time though | 00:19 | ||
timotimo | getting fprintf wrong is a thing i definitely do routinely | 00:23 | |
why isn't there a macro or something for "just output this piece of data correctly" | 00:24 | ||
samcv | synths inside synths! | ||
deeper deeper! | |||
ok i see what's happening. it created a synth which is L + utfc8-synth | 00:25 | ||
argh | |||
Geth | MoarVM: dae72d2fb0 | (Samantha McVey)++ | src/strings/ops.c If problem NFG_CHECK grapheme is a synth, give detailed info Shows whether or not it is a utf8-c8 synthetic or not, as well as shows what the first two codepoints inside it as well as the total number of codepoints in the synthetic. |
00:33 | |
samcv | ok i think i found the problem :0 | 00:56 | |
i just have to change a 0 to a 1 and things i think will work. running spectest now | |||
does it count as off by one if a 0 should be a 1 | |||
MasterDuke_ | definitely. is this something it's easy to add a roast test for? | 00:57 | |
samcv | if i forget to run make spectest without nice -n 19, my system starts lagging really badly when NFG_CHECK is on | ||
i'm sure the memory pressure must be pretty bad runniig 9 threads | |||
hmm well we ca utf8-c8 synthetic and something else i guess but the problem becomes they're going to probably match fine | 00:58 | ||
maybe using .NFG on it hm | |||
though .NFG i think will flatten utf8-c8 | |||
i can't run t/02-rakudo/08-repeat.t with NFG_CHECK i run out of memory | 00:59 | ||
anyway gonna run make spectest and make sure no more NFG_CHECK problems | 01:02 | ||
MasterDuke_ | good deal | 01:10 | |
Geth | MoarVM: a0dc2747c3 | (Samantha McVey)++ | src/strings/normalize.c Fix bug causing utf8-c8 synthetics to combine with other codepoints Fixes a bug in MVM_unicode_normalize_should_break() where it returned 0 incorrectly when it should have been returning 1 to indicate NO break. |
01:18 | |
samcv | fixed. and all is good with the world once again :) | ||
m: use nqp; (nqp::indexingoptimized('L' ~ Buf.new(255).decode(<utf8-c8>))).chars.say | 01:22 | ||
camelia | 1 | ||
samcv | MasterDuke: this triggers it | ||
but we can't use indexingoptimized in roast | |||
and just concatting by itself doesn't trigger it | |||
MasterDuke | so run a regex on the string, that calls indexingoptimized | 01:23 | |
samcv | good point | 01:24 | |
well. no. it doesn't return the string | |||
though it won't match now | |||
timotimo | maybe put it into t/rakudo or nqp's test suite instead? | ||
samcv | say ('L' ~ Buf.new(255).decode(<utf8-c8>)) ~~ /L/ | ||
evalable6 | Nil | ||
samcv | m: say ('L' ~ Buf.new(255).decode(<utf8-c8>)) ~~ /L/ | ||
camelia | Nil | ||
samcv | m: say ('LL' ~ Buf.new(255).decode(<utf8-c8>)) ~~ /L/ | 01:25 | |
camelia | ļ½¢Lļ½£ | ||
samcv | m: say ('L' ~ Buf.new(255).decode(<utf8-c8>)) ~~ /L/ | ||
camelia | Nil | ||
samcv | yeah so that shows it | ||
ok i found where to put it | 01:29 | ||
MasterDuke | cool, more tests are good | 01:30 | |
Geth | MoarVM/in-situ-strings: e8f01d9c0f | (Timo Paulssen)++ | 6 files store short strings inside string's body uses the 8 bytes that the pointer to a buffer usually takes and puts up to 8 8-bit characters into it. Currently causes trouble with regex matches. |
01:31 | |
MoarVM/in-situ-strings: 8caa9736ab | (Timo Paulssen)++ | src/strings/ops.c teach string_char_at_in_string about in_situ |
|||
timotimo | (a rebase and one extra commit) | ||
MasterDuke | timotimo: did you see my comment the first time you pushed? | 01:32 | |
timotimo | it looks like string_char_at_in_string was what caused regexes to be unhappy in nqp's test suite | ||
cool, it survives stresstest | 01:56 | ||
MasterDuke | timotimo: it looks like the ` char *result_c;` at line 48 in latin1.c can be removed | 01:59 | |
timotimo | oh, that's left over from debugging | 02:01 | |
Geth | MoarVM/in-situ-strings: 1c4aba109d | (Timo Paulssen)++ | src/strings/latin1.c remove left-over debugging, MasterDuke++ |
||
MasterDuke | very cool. what sort of savings are you seeing? | 02:06 | |
timotimo | depends strongly on the workload | ||
samcv | timotimo: will we be able to store 2 32 bit graphemes in the poniter too? | 02:07 | |
timotimo | 50 megs saved in combing the core setting into an array | 02:08 | |
yes, that needs more code though :) | |||
samcv | combing it? | ||
timotimo | yeah, my @foo = "CORE.setting".IO.comb | ||
samcv | also the reason you are doing this is to reduce memory usage or allocations? | ||
timotimo | so it keeps all the strings around | ||
samcv | ah | ||
timotimo | saves an allocation for very short strings, one less pointer deref you have to do if you operate on it | 02:09 | |
lots of reasons | |||
samcv | yeah | ||
for sure | |||
with comb i can *totally* see the benefit | |||
timotimo | need to adjust lots of fastpaths that don't know about the new storage type | ||
these 50 megs of savings were about 25 bytes per character in the file combed | 02:15 | ||
that was only a little piece of total memory usage though | 02:16 | ||
Geth | MoarVM/in-situ-strings: 1afd45e895 | (Timo Paulssen)++ | src/strings/ops.c create in situ for nqp::chr if it fits into 8bit. |
02:18 | |
MasterDuke | timotimo: just curious, but in the changes you made to MVM_string_latin1_decode and iterate_gi_into_string, would it be beneficial to use the fsa for *old (since you know it's going to be small) | 02:26 | |
timotimo | that would require MVMString to learn about fsa in general | 02:30 | |
as old is just the pointer stolen from the blob_8 | |||
MasterDuke | oh, duh, of course | 02:32 | |
hm, maybe need to work on my fsa_for_strings_storage branch some more | 02:33 | ||
timotimo | hm, i added in situ 32 but my gc_mark code still points out a big amount of 32bit strings with 2 or fewer graphemes | 02:43 | |
anyway, bedtime. | 02:54 | ||
MasterDuke | later... | ||
02:56
ilbot3 joined
|
|||
samcv | timotimo: sounds fun | 05:41 | |
06:47
ilbot3 joined
06:51
domidumont joined
|
|||
nine | timotimo: doesn't this cause a lot of branching in string handling code? | 07:22 | |
07:46
brrt joined
07:59
lizmat joined
08:24
domidumont joined
08:57
zakharyas joined
09:12
zakharyas joined
10:14
AlexDaniel joined
10:25
robertle joined
|
|||
brrt | good * #moarvm | 11:11 | |
yoleaux | 14 Nov 2017 17:15Z <jnthn> brrt: the branch inline-lastexpayload fails t/02-rakudo/repl.t but works without the expr JIT. The problem is in the code at Proc.pm:73 in Rakudo; the try thunk is inlined into the enclosing block (not new, I think), but now the .receive method was inlined into the thunk with my branch. So it seems to have needed the nested inline to trigger it. | ||
brrt | thanks jnthn | 11:20 | |
i will try and debug it | |||
13:31
zakharyas joined
14:07
lizmat joined
14:42
zakharyas joined
|
|||
timotimo | nine: we already branch a bunch for the other storage strategies | 15:15 | |
15:24
robertle joined
16:05
brrt joined
17:32
releasable6 joined
17:41
domidumont joined
|
|||
samcv | good * | 17:52 | |
Zoffix | \o | 18:01 | |
18:16
zakharyas joined
18:25
zakharyas joined
18:32
zakharyas joined,
nwc10 joined
18:56
dogbert17 joined
18:59
AlexDaniel joined
|
|||
dogbert17 | o/ | 18:59 | |
.seen samcv | 19:01 | ||
yoleaux | I saw samcv 18:07Z in #perl6-dev: <samcv> i mean select them on my amazon smile profile that is | ||
dogbert17 | .tell samcv have a SEGV which might be of interest, gist.github.com/dogbert17/52ce8a69...b6114a379a | 19:02 | |
yoleaux | dogbert17: I'll pass your message to samcv. | ||
samcv | gcc should remove conditionals that can never be triggered right | 19:03 | |
yoleaux | 19:02Z <dogbert17> samcv: have a SEGV which might be of interest, gist.github.com/dogbert17/52ce8a69...b6114a379a | ||
samcv | dogbert17: are you using the latest MVM? | ||
dogbert17 | yes | 19:06 | |
MoarVM version 2017.10-80-ga0dc2747 | 19:07 | ||
samcv | well that runs out of memory for me at least with strict on | 19:08 | |
not sure about without strict | |||
dogbert17 | valgrind says the following before the SEGV | 19:12 | |
==17656== Invalid write of size 4 | |||
==17656== at 0x41C6A97: re_nfg (ops.c:287) | |||
==17656== by 0x41C5F22: NFG_checker (ops.c:80) | |||
==17656== by 0x41C615E: NFG_check_concat (ops.c:120) | |||
==17656== Address 0xa5f5140 is 0 bytes after a block of size 0 alloc'd | |||
the last line feels a bit strange | 19:13 | ||
samcv | i will check that in a bit. thanks | 19:17 | |
dogbert17 | yay :) | 19:21 | |
samcv | dogbert17: we can't throw inside MVMROOT right? | 19:31 | |
dogbert17 | I don't know :( | 19:32 | |
timotimo | probably problematic to do that | 19:41 | |
but since it's equivalent to a return, and the end of the mvmroot block is just a pop or pop_n, you can probably get away with putting a pop in place before the throw | 19:42 | ||
i'd probably convert the whole mvmroot macro into push and pop instructions instead, though | |||
samcv | i mean can't it throw inside another function you call | 19:46 | |
you have an MVMROOT and then inside it you call a function. which happens to throw | |||
then what | |||
i'm sure that happens | |||
Geth | MoarVM: samcv++ created pull request #753: collapse_strands with memcpy if all strands are same type 4x faster |
20:23 | |
samcv | sadly with this PR compliing the core setting is slower | 21:06 | |
not sure why yet | |||
going to try working to reduce the branching | 21:12 | ||
ok i believe i fixed the issue | 21:48 | ||
timotimo | hmm. if that happens, that's probably kinda bad | 22:13 | |
because then there'd be pointers pointing at random locations in stackframes | 22:14 | ||
or maybe we have a baseline of temp roots that we just restore to when an exception jumps things around | 22:16 | ||
ah yes | 22:17 | ||
throw_adhoc_free_va does MVM_gc_root_temp_pop_all near the end | 22:18 | ||
samcv | ah ok timotimo | 22:23 | |
so i don't have to worry about it then? | |||
timotimo | looks like no | 22:45 | |
jnthn | Yeah, I designed it so you can throw and not worry about what's on the temp root stack | 22:59 | |
The problem isn't so much local throwing, but you'd have to never *call* something in MVMROOT that might throw, and that'd be...very awkward. :) | |||
23:37
lizmat joined
|