Geth MoarVM: b9874fa94b | (Samantha McVey)++ | src/io/signals.c
Add parens to a #define to silence compiler warnings
06:13
MoarVM: 3f5b9bc891 | (Samantha McVey)++ | src/strings/ops.c
Speed up string cmp by 3-5x by using grapheme iterator

Use a grapheme iterator instead of MVM_string_get_grapheme_at_nocheck. Speeds up cmp for strands by 5x and flat strings by 3x.
06:15
timotimo holy crap, that's awesome! 06:20
samcv not sure how much it affects speed since i'd think most time it stops pretty soon. but. i also may be making it even faster than that 06:21
for flat strings
should make it 3x faster for flat strings compared to the already 3x improvement before 06:24
travis-ci MoarVM build failed. Samantha McVey 'Add parens to a #define to silence compiler warnings' 06:29
travis-ci.org/MoarVM/MoarVM/builds/361983731 github.com/MoarVM/MoarVM/compare/9...874fa94bc8
timotimo is your measurement for comparing two equal strings? does it change much for strings that differ on the first grapheme? 06:30
samcv two strings equal except the last 06:31
uh first grapheme difference is unchanged basically
or at least unmeasurable
since it does the same thing practically, doing getgraphemenocheck compared to initializing the grapheme iterator then grabbing from it 06:32
but after the first grapheme then you get the reduced overhead from not having to find your place in the string again
timotimo mhh, right 06:34
i'm definitely glad about the speedup \o/ 06:35
travis-ci MoarVM build failed. Samantha McVey 'Add parens to a #define to silence compiler warnings' 06:35
travis-ci.org/MoarVM/MoarVM/builds/361983731 github.com/MoarVM/MoarVM/compare/9...874fa94bc8
timotimo waitwhat? 06:36
it says failed but when i click the link all builds are green except for one that hasn't started yet?
samcv i restarting one of them
not sure why it failed
timotimo ah, ok
samcv well i restarted one. then it passed and i restarted another that i forgot to restart
timotimo i'll head over to breakfast now o/ 06:41
samcv o/ 06:42
Geth MoarVM: bcc32a2a50 | (Samantha McVey)++ | src/strings/ops.c
Speed up string cmp another 2-3x when both strings are flat

If both strings are flat we can iterate until we find the first grapheme which is different between them, then use the GraphemeIter from there.
07:23
Geth MoarVM: 19004b0ddd | (Timo Paulssen)++ | src/spesh/inline.c
fix wrong pointer type

harmless, but it rightfully warns
08:17
Geth MoarVM: 9730ff98a9 | (Timo Paulssen)++ | 3 files
jit continuationinvoke

ThreadPoolScheduler's do-await is a tiny method that pushes tiny tasks with continuationinvoke into the queue. Those can now be jitted.
09:50
timotimo laptop battery empty m) 09:51
nwc10 much ASAN excitement in NQP build: paste.scsys.co.uk/576663 10:10
may not have time (or battery) to dig this further and give you more detail
nwc10 #0 0x7fc221085aae in MVM_string_compare src/strings/ops.c:2323 10:11
nwc10 0x602000044892 is located 0 bytes to the right of 2-byte region [0x602000044890,0x602000044892) 10:11
lizmat looks like samcv++ had a hand in that 10:12
timotimo i'd really like something in the jit graph that lets us put reprid checks and optionally concreteness checks and generate that directly into the assembly 10:39
so we don't have to move these checks into the functions that were usually called by the interp.c that did the checks 10:40
invoking the brrt :) :)
jnthn I'd actually like something more declarative with regard to such checks 10:42
timotimo ah, something in oplist that update_ops would write out? 10:43
jnthn Yeah
timotimo since i have to procrastinate my lightning talk, maybe i'll implement that right quick 10:44
jnthn At the moemnt we have some ops checking and some functions checking
timotimo aye, it's a mess
jnthn and it'd be good to regularize it
Well, the history is
The checks were put into the interp originally.
Because we wanted to lift them out if possible
But...that made JITting hard
So they moved
Into the target functions
What I'd actually like is every function to exist as a checked and unchecked form 10:45
Perhaps with the checked forms generated
nwc10 .tell samcv bcc32a2a5024c0f1b4620db0cc5228cc3d0c43cc is the first bad commit -- paste.scsys.co.uk/576663 11:11
timotimo gist.github.com/timo/6f3513c8b3b58...7e508017e0 11:12
nwc10 use more 'bots'; 11:13
timotimo looks like we have just a single op that wants more than one check 11:15
timotimo not quite sure if the "required concrete" should go in the oplist or as a :foo at the end 12:54
dogbert2 libuv 1.20 is out, github.com/libuv/libuv/blob/v1.x/ChangeLog 13:02
timotimo i wonder if brrt would be mad about nested MVMJitNodes... 14:13
aha! i don't need to nest it! 14:40
nwc10 .tell samcv bcc32a2a5024c0f1b4620db0cc5228cc3d0c43cc is the first bad commit -- paste.scsys.co.uk/576663 17:06
yoleaux nwc10: I'll pass your message to samcv.
samcv nwc10: thanks. just waking up right now but will get to it shortly 17:35
yoleaux 17:06Z <nwc10> samcv: bcc32a2a5024c0f1b4620db0cc5228cc3d0c43cc is the first bad commit -- paste.scsys.co.uk/576663
nwc10 "good morning" :-) 17:36
Geth MoarVM/declarative_op_checks: a516da2917 | (Timo Paulssen)++ | 3 files
WIP on making concreteness / REPRid checks declarative

With support for this in the jit, we can more easily pull concreteness and reprid checks back out of functions that once got the checks put into them so they could more easily get jitted.
17:39
timotimo ^- this is still missing parts to parse the oplist changes and the jit does nothing with the information yet 17:41
samcv oh /facepalm 17:44
while (a_blob8[i] == b_blob8[i] && i < scanlen) # should be while (i < scanlen && a_blob8[i] == b_blob8[i])
heh
timotimo well, that's easy to solve, then! :D 17:47
samcv i've been thinking of adding ops that will force a string into 8bit or 32 bit formats for testing 17:57
japhb samcv: That seems rather useful, yes. I guess it depends on whether MoarVM already has a standard for such things. Closest I can think of is force_gc. 18:09
Geth MoarVM: 02dd49053b | (Samantha McVey)++ | src/strings/ops.c
Fix scanning loop in string cmp ASAN errors

We were checking the array before the bounds check which was causing an access one after the shortest string's array.
18:14
samcv also maybe we should have an asan build on TravisCI 18:23
Zoffix What's the equivalent to `die "some message"` in MoarVM? Like if some numeric operation fails, I just wanna throw a generic error 18:28
MVM_exception_throw_adhoc looks like 18:29
samcv ^ yep 18:41
Zoffix thanks
Geth MoarVM/fix-div_In-drift: 58297946d0 | (Zoffix Znet)++ | src/math/bigintops.c
Stash fix for nqp::div_In drift

Fixes github.com/rakudo/rakudo/issues/1651 but breaks denormals.
Also makes nqp::div_In 12.8x slower.
20:43
MoarVM/fix_num_drift2: a4c7dbf6f7 | (Zoffix Znet)++ | src/math/bigintops.c
Stash further div_In fix

Fixes drift and denormals but has weird results in mid-range negative powers :/
21:37
japhb
.oO( Fixes rift in space but now everyone is blue. I'm pretty sure they're not all supposed to be blue. )
21:39
Geth MoarVM: b735866dde | (Zoffix Znet)++ | src/math/bigintops.c
Fix drift in Num->Str roundtrip; Make nqp::div_In 14x slower

Fixes R#1651 github.com/rakudo/rakudo/issues/1651
The original code converted bigints to doubles right away, before dividing them, which caused some precision loss that was responsible for repeated Num->Str conversion to drift the value. ... (13 more lines)
22:34
synopsebot R#1651 [open]: github.com/rakudo/rakudo/issues/1651 [math] Drift in Str -> Num -> Str conversion
nwc10 samcv: ASAN is happy. (Or at least, no longer excited) 22:45