samcv exciting. i think i'll have to rewrite a lot of this but should hopefully take what i learned. for the first time got moarvm pulling collation values from the new data set 01:57
tested only single codeponits though. i need to see the best way to deal with the codepoint iterator and *peek* at the next codepoint without messing with the iterator or something
ack :9 02:08
err :(
oh i think i just need to use a codepoint iterator not a grapheme iterator. not sure why i was doing this in the first place 02:12
Geth MoarVM/collation-arrays: 25 commits pushed by (Timo Paulssen)++, (Jonathan Worthington)++, (Samantha McVey)++
review: github.com/MoarVM/MoarVM/compare/2...23b5d9ea98
04:14
06:23 brrt joined
brrt ohai, i can haz a new finding 06:24
i now believe we're dealing with an overflow in dynamic labels
why? becuase the disastrous byte sequence is: 75 80, which is interprteed as jne -0x80, and the correct sequence is 75 67, whic is interpreted as jne +0x67 06:25
which means that dynasm is failing to convert it to a wider label for $some-reason 06:26
06:49 domidumont joined 06:51 brrt joined 06:54 domidumont joined
brrt jnthn++ nice post 07:31
07:47 zakharyas joined, domidumont joined
brrt (the question is of course, what is the reason!) 08:16
samcv :( 08:18
sounds frustrating 08:19
brrt well, yes...
all in a days work :-)
08:26 robertle joined
samcv :-) 08:35
\o/ yay. it's pushing it onto the stack in MVM :) feels good 08:40
getting closer
feels nice putting the code i've been working on and actually having it work inside mvm properly :)
jnthn morning o/ 08:41
brrt++ samcv++ :)
samcv morning o/
brrt moarning jnthn, samcv 08:48
nwc10 good *, * 08:54
brrt ohai nwc10 08:55
samcv ugh somewhere my array gets cleared. now gonna have to add in a whole ton of prints 09:00
well gonna have to add a char * argument to all the functions so i can tell *which* stick is actually printing. otherwise it doesn't help me that much and is a bit confusing 09:01
jnthn If something is getting cleared unexpectedly, you might find data breakpoints useful 09:25
10:55 brrt joined
timotimo and rr so you can go forwards *and* backwards while data breakpoints are active 11:01
one of the problems i was chasing was something was not getting set, so it kept the null value that was set at the beginnig of the frame and not updating it ... 11:03
jnthn Funnily enough, I'm chasing down how a NULL gets passed as an arg at the moment 11:04
timotimo that's me! 11:05
well, only while profiling
jnthn This one is in t/qast/01-qast.nqp
I actually stumbled upon it by accident while doing spesh logging stuff
But figured I should try and work out what's going on, rather than just toss in a null check that shouldn't be needed
timotimo yup 11:06
github.com/timo/SDL2_raw-p6/blob/m...aw.pm#L427 - mine dies somewhere in here
trying to call .defined on a null 11:07
11:09 zakharyas joined
jnthn odd 11:14
lunch, bbs
11:37 MasterDuke joined
MasterDuke timotimo: don't know if this helps, but here i have a backtrace and valgrind output for a segv when profiling: gist.github.com/MasterDuke17/d8872...54682092fd 11:38
timotimo MasterDuke: nothing unusual about the valgrind output 11:39
MasterDuke ah well, hopefully you'll figure it out 11:43
timotimo the segv is most probably because that program had threads and profiling just always explodes once another thread exists 11:44
and the valgrind messages are from the mast compiler that allegedly writes uninitialized bytes to the file, and the FSA being torn down uncleanly at process termination with --full-cleanup
MasterDuke that was profile-compiling DrForr's test file, didn't notice that it had threads 11:46
timotimo i think it precompiled some other modules and that uses Proc which now uses Proc:dAsync
MasterDuke hm, so no way to profile precomp? 11:48
timotimo not until i finally fix whatever problem underlies the profiler blowing up in multithreaded situations 11:49
MasterDuke so we should be good to go by afternoon? ;) 11:51
jnthn back 11:52
timotimo huh. now i'm profiling some multithreaded snippets and they're not segfaulting 11:56
jnthn duh, found the NULL 11:57
Geth MoarVM/spesh-worker: 4bb2893d33 | (Jonathan Worthington)++ | 2 files
For Scalar parameters record content type also.
11:58
MoarVM/spesh-worker: 1e07e26921 | (Jonathan Worthington)++ | src/core/frame.c
Never pass a real NULL as an object arg.

Use VMNull instead.
MasterDuke jnthn: nice post. "Bool (form passed path)", and "case the the parameter" 11:59
jnthn MasterDuke: Thanks, fixed 12:04
Geth MoarVM/spesh-worker: f8c587d8f4 | (Jonathan Worthington)++ | src/spesh/log.c
Missing rooting; do less work if not logging.
12:05
MoarVM/spesh-worker: 5bbe95a747 | (Jonathan Worthington)++ | 2 files
Remove "warm enough to log" concept.

This would mean we never collected OSR points in the main body of a program, which would be a serious missed opportunity.
12:13
timotimo i wonder if i take out the code that puts null ops into the beginning of frames i'd get better watchpoint information out of my code
Geth MoarVM/spesh-worker: 24267c0d58 | (Jonathan Worthington)++ | src/6model/reprs/MVMSpeshLog.c
Correct marking for decont param record.
12:44
MoarVM/spesh-worker: 0484ba0cb5 | (Jonathan Worthington)++ | 7 files
Start sketching out spesh stats data structure.

This is where it will assemble per-static-frame summaries of what it disocvered from the logs.
13:05
MoarVM/spesh-worker: 092db5f614 | (Jonathan Worthington)++ | 6 files
Implement MVM_SPESH_BLOCKING.

Makes a thread that sends logs to the spesh worker thread wait until it has completed the specialization work. This will allow for easier debugging.
13:37
timotimo i think the FSA explodes during teardown because our extra threads don't know when the vm tears down 13:52
so they can't properly partake in teardown and so we use stuff that's already been freed or rather the main thread frees stuff that the other threads still want to use
13:59 dogbert17 joined
MasterDuke can they be notified? 14:00
timotimo in theory the mechanism that coordinates threads into doing gc could be taught about that 14:04
MasterDuke the same mechanism that could be adapted to handle multi-threaded profiling? 14:05
timotimo yep 14:10
MasterDuke is it currently very tied to coordinating gc? or is it more of a generic message-passing mechanism? 14:27
timotimo well, we don't want to give our threads other stuff to always be checking on top of GC coordination 14:29
that makes it a natural choice, imo
jnthn It's a mechanism that could be generalized somewhat 14:31
Though with great care
timotimo the rr irc channel is really quiet 14:32
Geth MoarVM/spesh-worker: eac57a4caf | (Jonathan Worthington)++ | 6 files
Record total hit counts frames; dump them.
15:11
timotimo i wonder if this crash happens because fully_deserialized == 0 in the static frame, heh. 15:12
(crash while trying to dump the bytecode, that is)
15:13 brrt joined
jnthn Possibly 15:18
I mean, that means we didn't bother reading in a bunch of info
Info which dumping would likely need
Geth MoarVM/spesh-worker: 4eb61cab0b | (Jonathan Worthington)++ | 2 files
Aggregate hit counts by callsite.
15:39
timotimo anyway, putting a call to finish up deserialization makes things work better 15:47
15:47 TimToady joined
timotimo oooooh this is some *bad* bytecode %) 15:49
getexcategory + box_i + smrt_numify + coerce_ni 15:50
but i think this is pre-speshed
er, well, when i dump the data of the *staticframe*, i'm not gonna get speshed code %) 15:51
jnthn Alright, figured out the next bit of the stats building but will leave that for tomorrow :) 16:00
Plan is stats model, then refactor how we do guards, then make the planner (deciding what specializations to produce) 16:01
And then it'll be the big step of migrating to really having specializations done by the specialization worker
brrt soā€¦. what is more, at the time the code is 'linked', dynasm doesn't yet know that the block can still be increased
*block size 16:02
jnthn figures that's enough for now :) 16:10
16:27 ilmari[m] joined 16:31 robertle joined 18:56 FROGGS joined 19:00 domidumont joined
Geth MoarVM/even-moar-jit: 09f421cc78 | (Bart Wiegmans)++ | 3rdparty/dynasm
Update dynasm to get OPTREX fix

Some instructions only optionally need a REX byte. In this case, the size of the generated code varies with the selected register, which is known at link time. Previously we fixed that by increasing the size if we found a REX byte was necessary. However, this interacts badly with label offset calculation - specifically, we would allocate a single byte for a relative label, which would then overflow if the code grew due to addition of REX bytes. So instead, we now always assume that the space is required, and decrease the offset if it turns out that it isn't.
20:49
MoarVM/even-moar-jit: e3c4fa9b00 | (Bart Wiegmans)++ | src/jit/core.expr
Add sp_fastcreate expr template

This one uncovered so many bugs:
  * in expr tree generation
  * in point-spilling
  * in spill-GC interaction
  * in dynamic register code generation
Fixing them was worthwile.
21:13 TimToady joined
timotimo did you contribute the optrex fix to upstream dynasm? 21:23
or is that something only moar users get the benefits of? 21:24
.o( come to moarvm, we have the correctest dynasm implementation on the market today! )
also: hell yeah! even moar jit \o/ 21:26
21:46 geekosaur joined
samcv jnthn++ on blog post 21:55
lizmat and another Perl 6 Weekly hits the net: p6weekly.wordpress.com/2017/07/03/...-on-speed/ 22:09
jnthn ah, nice, some bedtime reading :) 22:16
timotimo great! 22:25
timotimo reads
jnthn lizmat++ # another nice weekly :) 22:31
timotimo i made the mistake to click through to those reddit comments 22:35
jnthn The post was bad enough :P 22:37
timotimo could have been worse 22:39
Zoffix :)
timotimo i only now understand that samcv is going to do the talk about unicode in amsterdam. is an intercontinental flight involved there?
samcv yep 22:40
timotimo i do not envy you!
also, last time i looked, those were absurdly expensive :<
samcv got a roundtrip for 840 dollars
most of those ones you had to have a overnight layover in iceland but found one without it 22:41
jnthn Iceland is cool!
timotimo that's a little less than i would have expected
jnthn Not a cheap place for an overnight layover, though, I suspect 22:42
samcv i paid 1800 dollars roundtrip to manchester years ago. so this is much cheaper
though that was during chrismas time so more money prolly
jnthn Yeah, season certainly affects it
Though airline pricing can be utterly bizzare. 22:43
The most annoying one being a ticket for place A to place C with a connection in place B being way cheaper than buying just the flight from B to C. o.O 22:44
Glad you found a good deal, anyway
timotimo yay
jnthn Time to rest, methinks. Want to get some more spesh stats progress in tomorrow. 22:51
22:54 AlexDani` joined
samcv lldb is not a bad debugger 23:10
timotimo how's it scripting support? 23:21
samcv not sure
it prints out variables on the stack pretty great 23:22
timotimo time-travelling debugger support? :) :)
samcv timotimo, gist.github.com/samcv/ba9322985151...1440b87ad1 does gdb print out variables this nicely? 23:23
like complicated ones? 23:24
timotimo not by itself, but i have a gdb thingie installed that makes things a lot nicer
imgur.com/J5giaPi 23:26