timotimo | no, that's some unrelated process overwriting a piece of an object's header | 00:17 | |
usually when you write past the end of one object you'll corrupt the header of the next object | |||
samcv | ah | 01:34 | |
the weird thing is that in this case it's crashing when it returns early. meaning before it even starts writing any extra data to places | 01:35 | ||
so i don't know how my code could be messing something up since it returns early and it returns a string made by another function | 01:37 | ||
MasterDuke | valgrind say anything? | 01:46 | |
samcv | hmm let me try | 01:50 | |
it doesn't appear to have any issues when i run the pertinent code section by itself | 02:03 | ||
"\r" ~ "\n" | |||
oh forgot valgrind prints out a ton of stderr | 02:04 | ||
MasterDuke | .tell jnthn clang complains about src/6model/reprs/VMArray.c:307 `if (n < 0)`, that 'comparison of unsigned expression < 0 is always false'. n is an MVMuint64, can the check be tossed? | 02:16 | |
yoleaux | MasterDuke: I'll pass your message to jnthn. | ||
samcv | MasterDuke, well all the valgrind stuff is in the gc code it seems | 02:25 | |
MasterDuke, gist.github.com/samcv/5dc340abfb93...668de84396 | 02:27 | ||
hmm tho i guess something else could trigger hm | 02:28 | ||
no clue what. it doesn't make that much sense to me | |||
i'm gonna turn on strand debug | 02:29 | ||
same error | |||
well before (26440 errors from 5 contexts) after (26425 errors from 5 contexts) | 02:34 | ||
before as in master and after is my branch | |||
and lost the same number of bytes | |||
MasterDuke | do you get the same valgrind output on master? | 02:48 | |
samcv | hmm i do get something | 03:13 | |
well i get no valgrind output if i run it on the problematic file | |||
ok yes i do see some new stuff | 03:27 | ||
gist.github.com/samcv/91c9959d0a6b...84b74c541f seems to malloc and not free | |||
and conditional jump or move depends on uninitialized values | 03:28 | ||
MasterDuke | whoops | ||
samcv | ah i found one memory leak | 03:32 | |
MasterDuke | "gotta catch'em all!" | 03:34 | |
samcv | heh | ||
:) | 03:35 | ||
MasterDuke | i'm off to bed again, good luck | 03:37 | |
samcv | no memory leaks with my code anymore but still those jump errors i have no clue what causes them | ||
yayyyyy | 04:03 | ||
it's now passing that one :) | 04:04 | ||
so the only file failing is t/spec/S17-supply/lines.t with 4 tests failing all of them are about handling chunked lines | 04:19 | ||
oddly all the rest of roast passes perfectly. i'm not sure what is different about the chunked lines that might make it fail magically but pass every other concat test i have | 04:20 | ||
m: "a\nb\r\nc\rd\n\neeee".lines.perl.say | 04:28 | ||
camelia | ("a", "b", "c", "d", "", "eeee").Seq | ||
samcv | huh. that... the test is wrong maybe | ||
either that or that result is wrong | 04:29 | ||
the test is looking for ['a','b',"c\rd","", 'eeee'] | |||
only diference is the string is delivered through a supply which has .lines called on it but i see no reason the result shuold differ | |||
if it's through a supply or not | 04:30 | ||
m: "a\n" "b\r\n" "c\rd\n" "\n" "eeee" though i'd also think it should go like this so the test is right? hm | |||
camelia | ===SORRY!=== Error while compiling <tmp> Two terms in a row at <tmp>:1 ------> "a\n"ā "b\r\n" "c\rd\n" "\n" "eeee" though i'd expecting any of: infix infix stopper statement end statementā¦ |
||
samcv | but hm | ||
bisectable6, "a\nb\r\nc\rd\n\neeee".lines.perl.say | 04:31 | ||
bisectable6 | samcv, On both starting points (old=2015.12 new=8d5f332) the exit code is 0 and the output is identical as well | ||
samcv, Output on both points: Ā«("a", "b", "c", "d", "", "eeee").SeqĀ» | |||
samcv | where does that \r go though | ||
m: "a\nb\r\nc\rd\n\neeee".split(["\r\n", "\n"]).perl.say | 04:32 | ||
camelia | ("a", "b", "c\rd", "", "eeee").Seq | ||
samcv | hmm weird though the result i get | 04:42 | |
04:50
vendethiel joined
05:51
vendethiel- joined
|
|||
samcv | ok with enough printf's i think i figured out what is occuring. it's not adjusting one of the graphemes right | 06:03 | |
i mean. it says it is as it prints it out. but when i dump the final string it has an extra ord | |||
06:10
brrt joined
|
|||
samcv | ok so the issue was i needed to move the strands down one in certain cases. so now i have done that and that test passes. now to run full spectest again :) | 06:43 | |
brrt | \o/ | 06:51 | |
good * samcv | |||
samcv | good * :) | 07:01 | |
ok only failing 2 tests now | 07:02 | ||
anddd full spectest pass! | 07:09 | ||
07:16
brrt joined
|
|||
brrt | i can't seem to get the final bits of the 'optimistic store insertions' in place | 07:30 | |
because of the wrapping stuff | |||
samcv | wrapping? | 07:34 | |
brrt | glad you asked :-) | 07:45 | |
okay, so you maybe know that the 'expression' compiler starts of by converting a basic block into a tree of expressions by means of templates | 07:46 | ||
most operations map in a straightforward way | 07:47 | ||
however, some operations are annotated in some way, causing them to have some special significance | |||
for instance, an operation may represent the start of end of a frame handler, or maybe the start and end of an inline, etc. | 07:48 | ||
some operations need to invoke a new (possibly interpreted) subroutine | |||
and some operations may cause an exception to be thrown | 07:49 | ||
makes sense? | |||
so when that happens, we may need to wrap labels around the compiled code | 07:50 | ||
or we may need to wrap special checks to interrupt execution when the code inbetween may have caused an exception to be thrown | 07:53 | ||
07:55
domidumont joined
07:56
robertle joined
|
|||
brrt | now, the legacy JIT has to insert laods and stores for every operation because it can't look at two operations at the same time | 07:57 | |
the new JIT can, and I want it to not insert stores if not needed | |||
(when is it 'not needed'? that depends, but mostly when we can prove the value isn't used after, which is easiest if it is overwritten in the same basic block, and there isn't something that would use it in the meantime) | 07:58 | ||
so, i now have a 'flush' primitive implemented, which is what i want to extend to do this 'lazy' store insertion | 07:59 | ||
the complexity is mostly arround how that interacts with another mechanism, which is 'rooting' | |||
08:01
zakharyas joined
|
|||
brrt | in which i maintain a series of 'roots' that maintain the order of evaluation / compilation for the tre | 08:01 | |
so, basically, i maintain a set of currently used values | 08:02 | ||
08:02
domidumont joined
|
|||
brrt | when we need a value (that we'd load from memory), we first check if it has already been computed/loaded, and if it has, we reference that instead | 08:02 | |
that gets rid of the duplicate loads | |||
what i want to do is that when a value is computed, we insert a reference to the result of that computation, but we don't issue the STORE just yet | 08:03 | ||
when we have to flush to memory, we iterate over this set and issue the stores | |||
adding a STORE means creating a new node that wraps the value (with the store), and replacing the root that refered to the old computation with the node that refers to the store | 08:04 | ||
samcv reads :)) | 08:06 | ||
very interesting :) thank you | 08:07 | ||
brrt | :-) | 08:29 | |
anyway, wrapping 'guards' also works by replacing the computed node with a GUARD node | 08:30 | ||
obviously, we can't STORE the GUARD node because it doesn't yield a value | |||
08:55
lizmat joined
|
|||
brrt | it would also be bad, for instance, if we replace the root that refered to the GUARD to one refering to a STORE | 08:58 | |
Geth_ | MoarVM: b28eb23530 | (Samantha McVey)++ | src/strings/nfg.c Fix memory leak in MVM_nfg_is_concat_stable MVM_unicode_normalizer_cleanup was mistakenly not called before returning. |
09:32 | |
MoarVM: 03c8034b12 | (Samantha McVey)++ | 2 files Rename relative_ccc to MVM_unicode_relative_ccc Rename so we can use in MVM_nfg_is_concat_stable. |
|||
MoarVM: 68d9ec4415 | (Samantha McVey)++ | src/strings/nfg.c If both last_a and first_b during concat are non-0 CCC re_nfg Although I haven't been able to trigger a condition which would cause incorrect concatenation |
|||
09:57
zakharyas joined
10:09
vendethiel joined
10:55
lizmat joined
11:19
brrt joined
11:29
brrt joined
11:55
lizmat joined
12:54
nebuchadnezzar joined
|
|||
Geth_ | MoarVM: 4b87b0288f | (Jonathan Worthington)++ | 10 files Add a decodertakecharseof op. A variant of decodertakechars that finishes decoding/normalizing any content in the buffer before taking the chars. |
13:05 | |
13:44
lizmat joined
14:14
lizmat joined
15:03
domidumont joined
|
|||
Geth_ | MoarVM: e5f22faa51 | (Jonathan Worthington)++ | src/strings/decode_stream.c Copy correct length in get_all_in_buffer. We calculated the size to copy, but then ignored it, resulting in sometimes copying off the end of the buffer. |
15:04 | |
jnthn | That gets rid of the various invalid read/write in github.com/MoarVM/MoarVM/issues/611 | 15:05 | |
And replaces them with an invalid free :P | |||
dogbert17 | oh no :) | 15:06 | |
jnthn | That may well have been there before anyway | ||
lizmat | .oO( go back to jail, you do not receive 200 US$ ) |
15:07 | |
jnthn | ah, d'oh | 15:10 | |
15:12
brrt joined
|
|||
jnthn | Turns out we could make an MVMString whose buffer pointed to the middle of some malloc'd memory | 15:17 | |
lizmat | yikes | 15:18 | |
jnthn | Spectesting now | ||
timotimo | whoops, that'd do it :) | 15:22 | |
Geth_ | MoarVM: 198c72ba1d | (Jonathan Worthington)++ | src/strings/decode_stream.c Don't make string pointing into middle of buffer. This was due to a thinko when introducing an optimization that allows an existing decode buffer to be used directly as the string body. |
15:23 | |
jnthn | Think the other one goes back much further | 15:24 | |
Geth_ | MoarVM: eea7fd9328 | (Jonathan Worthington)++ | src/core/interp.c Fix ctxcode op to not leak a NULL. |
15:34 | |
jnthn | That's github.com/MoarVM/MoarVM/issues/562 | 15:38 | |
brrt | okay, trying the optimistic store thingy.. | 15:49 | |
fingers crossed | 15:50 | ||
jnthn | Feeling optimistic about it? :) | ||
brrt | well, i did all the hard-and-long thinking one might expect | ||
Geth_ | MoarVM/even-moar-jit: fb081bc00c | (Bart Wiegmans)++ | 2 files Emit stores optimistically Previously we would always emit a store whether necessary or not. Now we only issue a store when necessary for correctness. To do this the flush_variables mechanism has been extended to replace the roots (that compute the values) with STORE operations (that store them to memory). |
15:56 | |
brrt | okay, that will be it | ||
16:05
robertle joined
|
|||
Geth_ | MoarVM: lucasbuchala++ created pull request #614: Decoder typos |
16:12 | |
16:13
lizmat joined
|
|||
Geth_ | MoarVM: 1430b5ac69 | (Lucas Buchala)++ | src/6model/reprs/Decoder.c Decoder typos |
16:24 | |
MoarVM: 146c8fcca1 | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/6model/reprs/Decoder.c Merge pull request #614 from lucasbuchala/typos1 Decoder typos |
|||
16:51
eater joined
17:19
sivoais joined
17:42
brrt joined
17:59
AlexDaniel joined
18:02
stmuk joined
19:21
Ven joined
19:33
stmuk_ joined
19:43
lizmat joined
|
|||
samcv | good hi | 20:20 | |
timotimo | eeeeey | ||
20:22
Ven joined
20:25
domidumont joined
20:40
Ven_ joined
22:02
Ven joined
|
|||
Geth_ | MoarVM: 28b1419e51 | (Jonathan Worthington)++ | docs/ChangeLog Update ChangeLog for 2017.07. |
22:10 | |
jnthn | Will cut the release tomorrow; bit tired for that now. Reviewing changelog is welcome in the meantime :) | ||
yoleaux | 20:36Z <Zoffix> jnthn: FWIW, I bumped MoarVM then fresh clone and built everything and still getting 37% slower than usual roast runs. | ||
20:39Z <Zoffix> jnthn: roast runs == stresstest (not spectest; not sure if that's similarly slower) | |||
20:53Z <Zoffix> jnthn: false alarm. Turns out it was the nfc tests | |||
jnthn | .oO( not fast checking ) |
22:14 | |
22:14
Voldenet joined
|
|||
Geth_ | MoarVM: a5cf3d7759 | (Timo Paulssen)++ | tools/trace_spesh_optimizer.gdb document the trace_spesh_optimize script a little bit |
22:40 | |
timotimo | ^- this is a good thing to have in the release together with the introduction of this script | 22:41 | |
timotimo finds many typos in the changelog | 22:44 | ||
Geth_ | MoarVM: f95c785365 | (Timo Paulssen)++ | docs/ChangeLog minor changelog fixes and tweaks |
22:47 | |
samcv | timotimo, you can add full unicode 9.0 and emoji v4.0 text segmentation support | 22:52 | |
:) | |||
or should i add it | |||
timotimo | i say you should do it | 22:58 | |
celebratorily | |||
samcv | ok :) | 23:01 | |
timotimo gets ready for the unicode-related high-fives | 23:04 | ||
will you continue using the unicode "project" on github? last update end of march | 23:12 | ||
Geth_ | MoarVM: bccdb42344 | (Samantha McVey)++ | docs/ChangeLog ChangeLog reorganization and Unicode announcements |
23:15 | |
samcv | timotimo, uh UCD? | ||
timotimo | no i mean the "project" thingie | ||
samcv | hm | 23:16 | |
timotimo | with the columns you can put stuff into | ||
samcv | oh | ||
yeah i need to check up on that | |||
i may have done some of the things there | |||
timotimo | probably | ||
i'm considering (i think i already mentioned this in the past) making a project for my ideas, too | |||
samcv | yeah you should | 23:17 | |
was able to remove two things | 23:19 |