samcv MasterDuke, is it ready to go? Do you want to rebase it? 01:18
01:55 ilbot3 joined
samcv i'd push result onto mvmroot at 1716 and pop it before returning 01:58
MasterDuke the MVMROOTing seems a little suspect in general
samcv hmm?
MasterDuke why are separator and input rooted, but not result, with the only line inside the roots `result = (MVMString *)MVM_repr_alloc_init(tc, tc->instance->VMString);`? 02:00
samcv oh. because you are allocating a new string. and when that happens it can trigger gc 02:01
which is why NFG_CHECK needs to be rooted. because it creates a new string and checks it against it 02:02
and since result doesn't exist yet it doesn't need to be rooted there 02:03
MasterDuke so could i just do `MVMROOT(tc, result, { NFG_CHECK(tc, result, "MVM_string_join"); })` 02:04
right before the return?
samcv well i would just MVMROOT more than that. and make sure STRAND_CHECK is also rooted. since i will likely be optimizing it to not need renormalization. and if i do that we will need that section rooted 02:05
since it will allocate new strings and renormalize only specific sections 02:06
so 1715-right before return. and include STRAND_CHECk in the root too
you don't have to indent everything you contain. just put the MVMROOT with the same indent as the code 02:07
MasterDuke k 02:08
committed, rebased, pushed 02:14
samcv awesome :) 02:15
oh i don't see it rebased. i see the last commit though adding NFG_CHECK AND MVMROOT 02:16
MasterDuke 054ad4e1d6f6204fc6bbd1facf9387a51ad2e8b6 is the last one before my commits in my git log 02:19
samcv oh sorry i meant to squash it. you still run the rebase command to do it 02:20
either that or you can make some of the commit descriptions less parse. like "Some cosmetic changes" is not at all a good commit title
and most of them don't say the function you're doing the changes in 02:21
if it were me i'd squash it to one commit or a few. or change the description of the commits
so you can know which function the changes are in 02:22
MasterDuke redone 02:31
Geth MoarVM: c6dd41e137 | (Daniel Green)++ | src/strings/ops.c
Just copy strands in MVM_string_join if able

When everything to be joined are strands, just copy them directly instead of creating a single flat string. For small strings the overhead of being strands counteracts the saving in copying, so leave them them in the flat processing path, but for large strings it's much faster to copy the strands. ... (13 more lines)
02:34
samcv merged :-)
MoarVM: fee4ddfa5b | (Daniel Green)++ | src/strings/ops.c
If only one item is to be joined, just return it
MoarVM: 9053a1d715 | (Samantha McVey)++ (committed using GitHub Web editor) | src/strings/ops.c
Merge pull request #705 from MasterDuke17/just_copy_strands_in_join_if_able

Optimize MVM_string_join in both case of all strands and case of a single element to join
MasterDuke cool, thanks 02:35
samcv thanks for the work :) 02:36
join is one thing i haven't taken too much of a look at. eventually it might make sense to create a flat string depending on what % of each strand. since strands can refer to a string, and refer to the start and end positions. so they could be 1 grapheme or refer to the entire string. and smartly decide, if the strand makes up all or most of the whole string, then just join them. but if it's only a fractional part of it, maybe it's better to make a flat 02:37
string so GC can happen if the other strings aren't used anymore
something to think of at least 02:38
03:02 Ven`` joined 03:15 zakharyas joined 05:42 brrt joined
brrt good * #moarvm 05:42
05:55 domidumont joined 06:03 domidumont joined 06:07 brrt joined 06:10 domidumont joined 06:43 brrt joined 07:00 Ven joined 07:41 Ven`` joined 07:54 nativecallable6 joined, quotable6 joined, greppable6 joined, releasable6 joined, coverable6 joined, unicodable6 joined, evalable6 joined, benchable6 joined, bisectable6 joined, committable6 joined, squashable6 joined, bloatable6 joined, statisfiable6 joined 08:20 robertle joined 08:25 Ven joined 08:45 brrt joined 09:04 Ven joined 09:44 Ven_ joined 10:33 Ven joined 11:06 lizmat joined 11:52 evalable6 joined
Geth MoarVM: 799bcb3b79 | (Timo Paulssen)++ | tools/graph_spesh.p6
put state inside $() instead of {} to prevent undersharing

the graph became quite funky when multiple annotations in the same BB turned into just one node and contorl flow threaded back and forth through it
12:02
MoarVM: 9d6c97d306 | (Timo Paulssen)++ | src/spesh/dump.c
missed a closing paren in spesh log
12:07
MoarVM: d4aeb72351 | (Timo Paulssen)++ | tools/graph_spesh.p6
need more explicit state for annotations, also include extra text
12:14
12:20 buggable joined 12:27 buggable joined
timotimo there are all manner of problems with the graph script %) 12:50
won't get around parsing FH starts and ends to make the call graph not look terrible 13:16
13:21 cognominal joined 13:32 Ven joined 13:54 Ven_ joined 14:53 Ven joined 15:08 brrt joined
timotimo dot isn't so happy about the nesting of frame handlers 15:18
but the call graph now resembles what's really going on somewhat without killing your eyes
japhb But only somewhat? 15:26
timotimo yeah, it's still got issues 15:27
15:31 brrt left
timotimo i uploaded it for your viewing pleasure 15:42
t.h8.lv/nqp_loop_graph.svg - the name is misleading, i just happened to have that still in my ctrl-r shell history %) 15:43
15:47 domidumont joined
timotimo bleh. i can assign an id to nodes that will be translated into the svg output 15:52
but i can't use that as an anchor by putting #blah_id at the end of the file path and have the browser scroll to it
15:53 domidumont1 joined
timotimo let's see if i can "just" put a javascript: url into the svg and have it work 15:54
<a xmlns="www.w3.org/2000/svg" xmlns:xlink="www.w3.org/1999/xlink" xlink:href="javscript:document.getElementById('bb_entry_32').scrollIntoView()" xlink:title="32"> 15:59
is this obviously wrong?
Zoffix would expect browsers to block that 16:01
timotimo why?
aren't javascript links bread and butter?
Zoffix Dunno, someone posts an SVG image with JS in it and all of a sudden site steals everyone's cookies
Does it work? 16:02
timotimo it asks me if i want to run xdg-open to open a javascript: link
Zoffix heh
timotimo graphviz is super useful and powerful, but its limitations infuriate me sometimes 16:03
16:07 jnthn joined
timotimo if i put the "generate an svg from this" part into the program, i can "just" post-process the file with a simple search-replace ... 16:10
16:14 camelia joined 16:16 evalable6 joined 16:17 releasable6 joined, statisfiable6 joined
MasterDuke .ask jnthn not to distract from concurrency stuff, but when you've got some time, any thoughts on github.com/MoarVM/MoarVM/pull/689? 16:18
yoleaux MasterDuke: I'll pass your message to jnthn.
MasterDuke any and all feel free to comment ^^^ 16:19
16:25 camelia joined 16:27 robertle joined
timotimo why didn't anybody tell me that my mistake was to spell it "javscript" instead of "javascript"? :\ 16:38
Zoffix didn't see it :o 16:39
timotimo now it executes 16:41
"properly"
except it scrolls to god-knows-where
16:43 camelia joined
timotimo oooh, it puts the id on the group 16:46
and the group probably doesn't have geometry or anything
even if i use the text or rectangle child i can't get it to properly scroll into view 16:48
why are you like this, javscript ;_;
16:59 camelia joined 17:10 camelia joined 17:34 avar joined 18:45 buggable joined 18:52 buggable joined 18:53 buggable joined 19:06 synopsebot6 joined 19:08 domidumont joined
MasterDuke timotimo: any idea how to debug `Unhandled exception: Cannot find meth at gen/moar/main.nqp:23 (/home/dan/Source/perl6/install/share/perl6/runtime/perl6.moarvm:<mainline>)` 19:48
gdb and valgrind aren't showing me anything useful (i can't get a backtrace from gdb) 19:49
AlexDaniel timotimo: holy shit. This is beautiful 19:58
timotimo: maybe add a few words explaining what that is and why, and mention it in the weekly? 20:00
and by ā€œmentionā€ I mean write something lizmat can use :) 20:01
I didn't even look at what this graph is about and already I feel a bit happy somewhere inside
MasterDuke makes a note not to sit too close to AlexDaniel if we ever end up in the same Edward Tufte class 20:04
samcv timotimo, are you gonna add a file to ./docs? 20:07
AlexDaniel oh, speaking of that, is there a list of perlĀ 6 events somewhere? I'd love to meet people. Wondering if there's something that's not too far. This is too outdated: www.perlfoundation.org/perl6/index....ing_events 20:08
20:08 domidumont joined
samcv wow that's pretty old! 20:08
timotimo why is this suddenly cool and fancy? i've made this tool like 3 years ago :) 20:36
maybe AD wasn't there yet 20:38
AlexDaniel I was there, just not here :) 20:39
timotimo heh, okay 20:44
samcv i don't know how to use it
timotimo yeah, it's not meant for users yet
what you have to do is copypaste a piece of speshlog into it and pipe the result into dot -Tsvg 20:45
i wanted a full-speshlog solution because it's super tedious to go through the file and cut out what you want 20:48
it didn't make it into the grant's scope, so i'll be working on something like that on the side, probably rather slowly in comparison
i've gotta check how fast i can plow through a big speshlog by only keeping around the locations of interesting bits 20:58
that reminds me i wanted to build dup2 support into moarvm 21:00
hum. with a decoder in play, can .tell be trusted at all, i wonder 21:20
geekosaur that question is why posix also has fgetpos/fsetpos and caveats on both interfaces 21:44
timotimo i haven't heard of that yet 21:48
jnthn timotimo: See the .tell method in IO::Handle, but tl;dr it depends on the encoding and also what the last grapheme you got back was 22:06
In general, it will always be accurate at positions where the normalization buffer is empty, which is after a normalization terminator, and those are controls 22:07
MasterDuke anybody have an idea why trying to use the FSA for string storage would give the problem shown in the following gist when running `perl6 -e ''`: gist.github.com/MasterDuke17/f29bc...676e545a81 22:09
timotimo ah, if i get line after line it should be fine
jnthn timotimo: Yeah, if you're reading line by line (for some \n-ending definition of line), things will be good 22:10
Thankfully you won't have \r line-terminators to deal with :)
\r turns out to be the only control that's not a normalization terminator, 'cus it combines with a following \n
timotimo aye
since i write this stuff out from inside moarvm with simplest file i/o c functions it'll be fine
jnthn MasterDuke: Not really, unless somehow your change coulda broken hash value caching or calculation on the string 22:12
MasterDuke i wouldn't think so, but i'll look there. thanks 22:13
jnthn yeah, feels a long shot to me too 22:14
timotimo it's not somehow doing an MVM_fixed_size_free on a malloced blob 22:15
or something?
MasterDuke fwiw, gist updated with diff 22:16
jnthn If you ain't already, try with MVM_FSA_DEBUG=1 turned on, and also with that turend on + valgrind
timotimo does the ... yes
jnthn (Or ASAN) 22:17
samcv i like asan :) 22:21
timotimo so, um, was it the case that an inlined body doesn't keep its own header? 22:22
i.e. would a class with "has str $.a; has str $.b" have just one header that both would install flags into?
jnthn str is a reference type 22:23
So it can't be flattened in
It's P6str that can be 22:24
samcv interestingly if we use FSA we don't get asan errors if we don't end up freeing things 22:25
timotimo good to know 22:30
samcv so that could not be good hm 22:33
maybe we need some ifdefable thing so that it will record and make sure it ends up getting freed
or something...
timotimo you mean during full cleanup? 22:34
jnthn Just compile with MVM_FSA_DEBUG=1 22:37
It delegates everything to malloc but sticks a size at the start
MasterDuke as an env variable? 22:38
samcv ah 22:39
timotimo no, it's an ifdef
well, a #define
MasterDuke MVM_FSA_REDZONE_BYTES? 22:40
22:41 leont joined
MasterDuke that's the only *_FSA_* thing that looks relevant 22:41
timotimo hm, no, not that 22:42
MasterDuke ah, FSA_SIZE_DEBUG?
timotimo yes
FSA_REDZONE_BYTES is about --valgrind support
MasterDuke thought so 22:43
ah, `MoarVM panic: Fixed size allocator: wrong size in free` 22:45
but where!
timotimo well, gdb break MVM_panic 22:46
MasterDuke i did, i just wanted the computer to do it for me
timotimo hehe. 22:47
jnthn Well, good luck. I'm off to rest. :) o/ 23:13
MasterDuke thanka, making progress. found a couple places i forgot to multiply by sizeof(MVMGrapheme32) 23:18
samcv that will do it
timotimo with the redzones from --valgrind and valgrind that could have been found, too, perhaps 23:19
23:41 committable6 joined