Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2017-07-07

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:20 timotimo https://gist.github.com/timo/f85f49d0e4b1e9dc52f312e64caeb3cb - anyway, here's what i got for the offset setting and usage in the arg guard tree interpreter thingie. something's wrong, but i don't quite know what.
01:20 timotimo actually, let me change that back to the version that would complain if the two methods disagreed
01:21 timotimo 'k, bedtime.
01:48 ilbot3 joined #moarvm
01:48 Topic for #moarvm is now https://github.com/moarvm/moarvm | IRC logs at  http://irclog.perlgeek.de/moarvm/today
02:31 TimToady joined #moarvm
03:47 japhb joined #moarvm
03:48 greppable6 joined #moarvm
04:15 japhb joined #moarvm
04:51 japhb joined #moarvm
05:17 japhb joined #moarvm
06:24 bisectable6 joined #moarvm
06:24 evalable6 joined #moarvm
06:24 committable6 joined #moarvm
06:24 bloatable6 joined #moarvm
06:24 quotable6 joined #moarvm
06:24 unicodable6 joined #moarvm
06:24 coverable6 joined #moarvm
06:24 greppable6 joined #moarvm
06:24 benchable6 joined #moarvm
06:24 statisfiable6 joined #moarvm
06:38 domidumont joined #moarvm
06:39 leedo_ joined #moarvm
07:23 domidumont joined #moarvm
07:28 geekosaur joined #moarvm
07:29 domidumont joined #moarvm
07:48 brrt joined #moarvm
08:00 domidumont joined #moarvm
08:00 robertle joined #moarvm
08:51 ilmari joined #moarvm
08:53 jnthn morning o/
08:55 brrt joined #moarvm
08:55 brrt moarning
09:12 jnthn Ah, smarter yesterday me left Friday me a note on what to do next :)
09:21 samcv hey jnthn
09:24 jnthn o/ samcv
09:24 jnthn How'd we end up with that neg codepoint being accessed, ooc?
09:24 jnthn We construct all strings ourselves...
09:24 samcv that is a good question
09:25 samcv it only dies when you try and print it to the screen
09:25 samcv well encode the stringc
09:25 jnthn What's "it"?
09:25 jnthn Is there an RT I should be looking at? :)
09:25 samcv ok so you decide fo♥o as ascii
09:25 samcv and it decodes the ascii but ends up with three synthetics that don't exist
09:25 samcv where i assume there are 3 utf-8 bytes
09:26 jnthn m: 'fo♥o'.encode('utf-8').decode('ascii')
09:26 camelia rakudo-moar b0c8e1: OUTPUT: «Can not decode a utf-8 buffer as if it were ascii␤  in block <unit> at <tmp> line 1␤␤»
09:26 jnthn m: Buf.new('fo♥o'.encode('utf-8')).decode('ascii')
09:26 camelia rakudo-moar b0c8e1: OUTPUT: «Will not decode invalid ASCII (code point > 127 found)␤  in block <unit> at <tmp> line 1␤␤»
09:26 samcv m: with "/tmp/foo2121".IO { .spurt: "fo♥o"; with .open(:enc<ascii>) { say .slurp } }
09:26 camelia rakudo-moar b0c8e1: OUTPUT: «MoarVM panic: MVM_nfg_get_synthetic_info called with out-of-range synthetic␤»
09:26 jnthn That's what should happen
09:26 jnthn Oh wow
09:26 brrt (we're only using the jit_entry_label as a position marker in frame.c and exceptions.c, and that can easily be handled with stack-walking, so we can kill the dynamic labels)
09:26 samcv that doesn't show the never error and i changed it to not panic and just throw
09:26 samcv with a nicer error message
09:27 samcv MVM_nfg_get_synthetic_info call requested a synthetic codepoint that does not exist.
09:27 samcv Requested synthetic 30 when only 6 have been created.
09:27 samcv ^new message
09:27 jnthn Yeah, I think it should oops instead of throw though
09:27 jnthn And we apparently need to fix our ascii decoder :P
09:27 samcv you want it to panic?
09:27 jnthn Yes
09:27 jnthn This should *never* happen, if it did then we've (interanlly) constructed a corrupt string
09:28 jnthn The user can never give us synthetics directly
09:28 samcv well there are issues with the decoder. better to allow the user to work around a bug that exists
09:28 samcv than have it be unrecoverable
09:28 samcv i know it should never happen but...
09:28 samcv the fact is it does happen :P
09:29 samcv maybe you can set it back to panic when the bug isn't triggered anymore?
09:29 samcv not sure how strongly you feel about panicing
09:29 samcv though  maybe the fix is really simple idk
09:31 jnthn I suspect it's a one-line patch
09:31 samcv ah ok. then feel free to set it back to a panic
09:33 jnthn Well, can make it oops instead since we get a stack trace that way
09:33 samcv i never got a stack trace on panic
09:33 samcv what did i do wrong
09:33 jnthn panic doesn't stack trace
09:33 jnthn oops does
09:33 samcv ah ok
09:33 jnthn Both exit
09:34 jnthn panic is for situations where we are in such a bad state we don't know we'll even survive the stack trace :)
09:34 jnthn oops is where something really bad has happened, but we expect we can give a stack trace without a SEGV
09:35 samcv makes sense
09:36 samcv hmm why did i fail all the nativecall tests
09:37 samcv maybe my build is weird... hmm
09:37 jnthn I've got a heap of other diffs I'm working on in another branch so will do it later, but if you fancy beating me to it, I think the patch is just to change https://github.com/MoarVM/MoarVM/blob/master/src/strings/ascii.c#L69 here to declare a MVMuint8 instead of char
09:37 samcv idk i have it on --debug=3 --optimize=0 --compiler=clang
09:37 samcv i'm going to bed very shortly
09:37 jnthn np, I'll do it later today then :)
09:37 samcv was gonna finish a last commit
09:38 jnthn np
09:38 * jnthn is still trying to finish a first commit :)
09:50 Geth ¦ MoarVM: a3e986924a | (Samantha McVey)++ | 4 files
09:50 Geth ¦ MoarVM: Fix overflow in uniprop lookups. Closes issue #566
09:50 Geth ¦ MoarVM:
09:50 Geth ¦ MoarVM: Use MVMint64 instead of MVMGrapheme32 so we don't get an overflow.
09:50 Geth ¦ MoarVM:
09:50 Geth ¦ MoarVM: In ucd2c.pl: fix some syntax errors. I am not sure why they are
09:50 Geth ¦ MoarVM: showing now and not earlier. This was on Perl v5.24.1
09:50 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/a3e986924a
09:59 Geth ¦ MoarVM/spesh-worker: ec38f67c99 | (Jonathan Worthington)++ | src/spesh/candidate.c
09:59 Geth ¦ MoarVM/spesh-worker: Form type tuple from args buffer, not guards.
09:59 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/ec38f67c99
10:02 Geth ¦ MoarVM/spesh-worker: c53dfcc5aa | (Jonathan Worthington)++ | src/spesh/candidate.c
10:02 Geth ¦ MoarVM/spesh-worker: Remove dead variables; update comments.
10:02 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/c53dfcc5aa
10:06 Geth ¦ MoarVM/spesh-worker: 37167b3991 | (Jonathan Worthington)++ | src/spesh/dump.c
10:06 Geth ¦ MoarVM/spesh-worker: Remove old arg guards from spesh dumper.
10:06 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/37167b3991
10:09 Geth ¦ MoarVM: 4ff2f1f918 | (Samantha McVey)++ | src/strings/normalize.c
10:09 Geth ¦ MoarVM: Improvements to segmentation of Emoji w/ GCB=Other
10:09 Geth ¦ MoarVM:
10:09 Geth ¦ MoarVM: Not all Emoji Modifiers have Grapheme_Cluster_Break = E_Base or
10:09 Geth ¦ MoarVM: E_Base_GAZ. In these cases we need to check the Emoji_Modifier_Base
10:09 Geth ¦ MoarVM: property.
10:09 Geth ¦ MoarVM:
10:09 Geth ¦ MoarVM: Correctly segments 25 more Emoji than before (Unicode Emoji v4.0).
10:09 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4ff2f1f918
10:09 samcv ok. i'm done for tonight :) time to go to bed
10:09 samcv night all o/
10:10 Zoffix night
10:12 jnthn 'night, samcv++
10:20 samcv ok added a roast test. now i can really sleep
10:22 jnthn :)
10:24 Geth ¦ MoarVM/spesh-worker: f62474bda8 | (Jonathan Worthington)++ | 5 files
10:24 Geth ¦ MoarVM/spesh-worker: Eliminate old arg guards mechanism fully.
10:24 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/f62474bda8
11:05 brrt joined #moarvm
11:11 brrt joined #moarvm
11:16 Geth ¦ MoarVM/spesh-worker: ae86b1c710 | (Jonathan Worthington)++ | 3 files
11:16 Geth ¦ MoarVM/spesh-worker: Make arg specialization take a type tuple.
11:16 Geth ¦ MoarVM/spesh-worker:
11:16 Geth ¦ MoarVM/spesh-worker: Rather than the args buffer. This will make it easier to migrate to
11:16 Geth ¦ MoarVM/spesh-worker: use from the specialization worker thread, and also to produce
11:16 Geth ¦ MoarVM/spesh-worker: specializations that are not type-sensitive or only commit to certain
11:16 Geth ¦ MoarVM/spesh-worker: types.
11:16 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/ae86b1c710
11:17 jnthn lunch &
11:25 brrt joined #moarvm
12:13 * jnthn back
12:28 jnthn OK, so...new logging is in, new stats model is in, new guards are in
12:30 jnthn So the next step is the planner
12:30 jnthn (The thingy that decides what specializations to build.)
12:31 timotimo say, for baseline spesh we don't really need anything more than just the planner doing the spesh earlier and not having anything happen for args?
12:31 timotimo oh, not quite true
12:31 timotimo it does callsite-based opts of course
12:33 jnthn Also wvals and static lexicals provide info that we can rely on
12:34 timotimo ah, indeed
12:34 jnthn Though today I use the term "certain" rather than "baseline"
12:34 timotimo sure
12:34 jnthn Note that if we see that every call is, say, (Int,Int) or so, there's no reason to produce a certain one
12:35 timotimo fair enough, yeah
13:05 Geth ¦ MoarVM/spesh-worker: dc80d7def6 | (Jonathan Worthington)++ | 5 files
13:05 Geth ¦ MoarVM/spesh-worker: Sketch out specialization plan data structure.
13:05 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/dc80d7def6
13:31 AlexDaniel joined #moarvm
13:35 Geth ¦ MoarVM/spesh-worker: 3e6890c11e | (Jonathan Worthington)++ | 4 files
13:35 Geth ¦ MoarVM/spesh-worker: Add spesh plan memory management bits.
13:35 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/3e6890c11e
13:37 [Coke] spesh question; you make faster code when you notice types don't change, partly by removing type checks; how do you then fall back when the types DO change?
13:37 timotimo we emit guard operations every time we assume something
13:37 timotimo when the guard fails we do a "deopt"
13:38 [Coke] is the guard..  a ... type check?
13:38 [Coke] I'm trying to suss how it can be cheaper than the original work.
13:39 ilmari [Coke]: the code following the guard can be specialised for that type without further checking
13:39 ilmari instead of each op having to check/dispatch on the type
13:42 [Coke] ilmari: ah, thanks.
13:42 jnthn Right, it's a "check it once, then rip out all further checks" kind of deal
13:43 jnthn Except we tend to do precise checks too
13:43 jnthn Rather than "is it some kind of..."
13:43 jnthn Which are also cheaper (just a pointer comparison rather than an MRO search)
13:44 jnthn It's not just type checks, though; from that we can also do stuff like ripping out pointless decont ops, or turning decont ops we need into cheaper operations without the virtual calls
13:44 [Coke] jnthn: with the utf8/strict discussion I saw earlier, does that positively influence your million-line-read bench?
13:44 jnthn [Coke]: Didn't do any new measuring, but it's probable you can get Perl 5 to go faster if you know what you're doing.
13:45 jnthn Rather than taking the typical approach of :encoding(utf-8) or so
13:45 jnthn So it probably speeds up the Perl 5 case and gives us some further catching up :P
13:45 ilmari :utf8 would be faster, but unsafe
13:46 ilmari because it doesn't actually decode or check, just flags it as utf8 internally
13:46 jnthn omg
13:46 timotimo hah
13:46 timotimo that's just mean
13:46 ilmari yeah, it's heavily discouraged
13:46 jnthn But wait, that means that everything you do downstream must have to check "is this OK utf8"?
13:46 jnthn Or is that amortized?
13:47 [Coke] I just wanted to make sure we weren't missing a chance to force a stricter, slower mode to compare apples.
13:47 ilmari it means everything breaks if it's not actually valid
13:47 timotimo i don't think anything checks if "is this valid utf8"
13:47 jnthn Breaks as in...exception? SIGSEGV?
13:47 [Coke] er, *.apples?
13:47 ilmari on a debug build you might get assert failures
13:48 ilmari jnthn: sigsegvs, bogus results, panics, all bets are off
13:48 timotimo [Coke]: many operations are implemented as a lookup on the REPR of the object and the REPR has a bunch of so called REPRops, which are basically function pointers
13:48 brrt joined #moarvm
13:48 jnthn ilmari: Goodness. o.O
13:48 jnthn No wonder it's discouraged!
13:48 timotimo [Coke]: but if we know the exact type, we also know the REPR and all of its contents, so instead of multiple pointer dereferences and a function call invocation we can be much smarter
13:48 ilmari I believe leont and others are working on a :utf8-strict layer, which actuall checks
13:48 jnthn Yeah, that's probably the one to compare with then
13:48 ilmari but is faster than :encoding(UTF-8)
13:48 [Coke] glad you smart people are working on these bits. :)
13:48 ilmari for now, :encoding(UTF-8) is the right thing to compare to
13:48 jnthn :utf-8 is apples and oranges
13:49 timotimo and some REPRs will do some extra optimization on top of that. for example, Rakudo Scalar can grab its contents with a "dereference this pointer and grab the pointer that lives at this offset" operation, which is extremely cheap (especially when jitted)
13:49 jnthn Uh, :utf8 rather
13:49 timotimo jnthn: have you been comparing to :utf8 or :encoding(UTF-8)?
13:49 jnthn timotimo: The latter :)
13:50 timotimo OK, so no cheap win to be had there :)
13:50 [Coke] *finger snap*
13:50 timotimo indeed
13:50 jnthn So basically, utf8-strict sounds like it will give us some more serious competition.
13:51 jnthn But if :encoding(UTF-8) is typical today then the 1.1x result stands as representative of real world use.
13:51 jnthn And we'll find that .1 :)
13:56 timotimo i hear thunder. i hope it'll really come down soon and cool things off
13:57 jnthn We're due some. I'd welcome it.
14:00 jnthn It's managed to get a few degress warmer than was originally forecast today
14:00 timotimo it says something like 32degC max
14:00 timotimo i'm having trouble cooling down my apartment
14:01 moritz we had a thunderstorm at like 4am this morning :-)
14:01 jnthn It's 30 here right now
14:01 timotimo last night i had one window open and put a fan in the way, but then a gigantic insect came in
14:01 timotimo it was about as long as my index finger i'm sure
14:01 timotimo looked like a grasshopper, except i think those are more like fingernail sized? so maybe it was a locust?!
14:01 jnthn Hah, we had one of those come in last summer
14:01 jnthn Long green thing. My wife thought it was a locust.
14:02 timotimo yeah, sounds like that's what i had
14:02 jnthn It slept on the curtain rail overnight. I nicknamed it Mr Greeny. Flew away out the window the next morning.
14:02 timotimo i do have a picture of it, but i had the lights off and the flash decided to light only the curtain, not the insect, so it's really dark
14:02 timotimo let me see if i can "enhance"
14:03 timotimo looks better
14:03 timotimo http://imgur.com/1fl6sEt
14:04 jnthn Hm, looks pretty similar
14:05 jnthn 'twas big, but given it just hung out overnight and left, I'd prefer it to mosquitos, which bite me :P
14:05 timotimo i'm unreasonably squeamish when it comes to insects
14:05 jnthn Yeah, can understand it
14:05 timotimo i was very glad when it decided to fly out the window and sit against the blinds, then i closed the window on 'em
14:05 jnthn I'm not that keen, tbh, but manage not to be too bothered
14:06 timotimo i'm scared i might have trapped it there and when i open the window it'll come in and be angry at me
14:10 timotimo uh oh, i crushed it ... i think it's dead
14:10 jnthn oops
14:21 Geth ¦ MoarVM/spesh-worker: 5952915f3e | (Jonathan Worthington)++ | 5 files
14:21 Geth ¦ MoarVM/spesh-worker: Stub in specialization planning and dumping.
14:21 Geth ¦ MoarVM/spesh-worker:
14:21 Geth ¦ MoarVM/spesh-worker: No calculations yet; this is just the groundwork.
14:21 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/5952915f3e
14:29 Geth ¦ MoarVM/spesh-worker: 371220a983 | (Jonathan Worthington)++ | 3 files
14:29 Geth ¦ MoarVM/spesh-worker: Aggregate OSR hits over all callsites.
14:29 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/371220a983
14:35 brrt joined #moarvm
14:45 timotimo at the moment i get - for a quite long test file - just a single plan and it says "0 specializations will be produced"
14:52 jnthn Right, as the commit said, no calculations done yet ;)
14:52 timotimo oh
14:52 timotimo duh :)
14:52 jnthn Also we only ever send one buffer of stats so far
14:56 lizmat joined #moarvm
15:04 Geth ¦ MoarVM/spesh-worker: 0cfd3bb8f0 | (Jonathan Worthington)++ | 2 files
15:04 Geth ¦ MoarVM/spesh-worker: Implement basic planning by callsite.
15:04 Geth ¦ MoarVM/spesh-worker:
15:04 Geth ¦ MoarVM/spesh-worker: This just adds in certain specializations; types are not considered
15:04 Geth ¦ MoarVM/spesh-worker: at this point.
15:04 domidumont joined #moarvm
15:04 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/0cfd3bb8f0
15:04 Geth ¦ MoarVM/spesh-worker: 08c31e644b | (Jonathan Worthington)++ | src/spesh/dump.c
15:04 Geth ¦ MoarVM/spesh-worker: Explain why certain specializations were produced.
15:04 Geth ¦ MoarVM/spesh-worker: review: https://github.com/MoarVM/MoarVM/commit/08c31e644b
15:05 timotimo the rain has arrived
15:06 timotimo aaaaand it's gone
15:06 jnthn Not here yet :(
15:07 jnthn The type analysis comes next, but it's a bit warm and late on a Friday afternoon to figure that out.
15:07 jnthn I'll take a look at that ASCII decoder fail from earlier though
15:08 jnthn Am taking a couple of days vacation at the start of next week, also, so will continue with the spesh stuff on Wed when I'm back
15:08 jnthn (Goes without saying this stuff isn't aimed for the 2017.07 release)
15:08 timotimo that sounds nice
15:14 dogbert17 the ASCII deocder fail was reported by Zoffix as RT #131384
15:14 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131384
15:16 * dogbert17 wonders what a deocder is
15:18 jnthn Something that looks at a bunch of bytes and works out what unicode codepoints they represent
15:18 jnthn Oh, hah, the typo :P
15:18 dogbert17 :)
15:35 Geth ¦ MoarVM: 31ca7fa702 | (Jonathan Worthington)++ | src/strings/ascii.c
15:35 Geth ¦ MoarVM: Fix ASCII streaming decode error handling.
15:35 Geth ¦ MoarVM:
15:35 Geth ¦ MoarVM: We accidentally used a signed type, and so would treat out of range
15:35 Geth ¦ MoarVM: as if they were synthetics, rather than simply giving the out of range
15:35 Geth ¦ MoarVM: error.
15:35 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/31ca7fa702
15:35 Geth ¦ MoarVM: 4d408e9abf | (Jonathan Worthington)++ | src/strings/nfg.c
15:36 Geth ¦ MoarVM: Make illegal synthetic an oops, not a throw.
15:36 Geth ¦ MoarVM:
15:36 Geth ¦ MoarVM: This partially undoes f621f21191c5c3a3035d3121c042cba4348c18cc, but
15:36 Geth ¦ MoarVM: leaves in place the stack trace. The reasoning is that an invalid
15:36 Geth ¦ MoarVM: synthetic is almost certainly going to be an indication of a serious
15:36 Geth ¦ MoarVM: internal error (potentially corruption); only MoarVM constructs
15:36 Geth ¦ MoarVM: synthetic codepoints, so any time an invalid one shows up it has to
15:36 Geth ¦ MoarVM: be a VM mistake.
15:36 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4d408e9abf
15:36 Geth ¦ MoarVM: 45b008fb6f | (Jonathan Worthington)++ | src/core/exceptions.c
15:36 Geth ¦ MoarVM: Tweak a comment and oops output.
15:36 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/45b008fb6f
16:04 robertle joined #moarvm
16:09 travis-ci joined #moarvm
16:09 travis-ci MoarVM build errored. Jonathan Worthington 'Tweak a comment and oops output.'
16:09 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/251204892 https://github.com/MoarVM/MoarVM/compare/4ff2f1f9185b...45b008fb6ff8
16:09 travis-ci left #moarvm
16:15 bisectable6 joined #moarvm
16:50 domidumont joined #moarvm
17:10 bisectable6 joined #moarvm
17:18 buggable joined #moarvm
17:21 bisectable6 joined #moarvm
17:46 evalable6 joined #moarvm
19:55 FROGGS joined #moarvm
21:02 Geth ¦ MoarVM: 522e005ced | (Samantha McVey)++ | src/strings/normalize.c
21:02 Geth ¦ MoarVM: Actually fix the emoji from commit 4ff2f1f9
21:02 Geth ¦ MoarVM:
21:02 Geth ¦ MoarVM: There was an error in the location of the previous commit,
21:02 Geth ¦ MoarVM: this moves it to the proper place.
21:02 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/522e005ced
21:02 samcv oops looks like i pushed the wrong thing eariel
21:03 samcv well there it's fixed
21:15 MasterDuke joined #moarvm
21:19 MasterDuke timotimo, jnthn, et al: might find this useful, a gui for perf results similar to heaptrack: https://www.kdab.com/hotspot-gui-linux-perf-profiler/
21:20 timotimo doesn't look half bad
21:22 MasterDuke just installed it on my desktop, haven't had a chance to try it out yet, but it does look promising
21:24 evalable6 joined #moarvm
21:29 travis-ci joined #moarvm
21:29 travis-ci MoarVM build passed. Samantha McVey 'Actually fix the emoji from commit 4ff2f1f9
21:29 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/251309821 https://github.com/MoarVM/MoarVM/compare/45b008fb6ff8...522e005ced36
21:29 travis-ci left #moarvm
22:34 jnthn MasterDuke: Looks nice; will give it a try :)
22:35 Geth ¦ MoarVM: 06819cce28 | (Samantha McVey)++ | src/strings/normalize.c
22:35 Geth ¦ MoarVM: Use GCB instead of HST to avoid property lookup for Hangul
22:35 Geth ¦ MoarVM:
22:35 Geth ¦ MoarVM: This should result in some speed up and we don't have to
22:35 Geth ¦ MoarVM: use strcmp anymore and we can just compare integers. It doesn't
22:35 Geth ¦ MoarVM: require any more property lookups than any other codepoints going
22:35 Geth ¦ MoarVM: through should_break() now.
22:35 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/06819cce28
22:38 jnthn samcv++ # nice! Bet that generates far nicer code too :)
22:40 samcv yep
22:43 jnthn Do you think the maybe_hangul range checks are still a win?
22:44 jnthn Hm, they maybe are, looking at it
22:44 jnthn Guess it'd need callgrind to tell us :)
22:48 samcv hmm well. probably not needed maybe. hm
22:48 samcv heh
22:49 colomon_ joined #moarvm
22:52 samcv this code though https://github.com/MoarVM/MoarVM/blob/06819cce287d30ad62ccaefec2211dbb5daf9d61/src/strings/normalize.c#L338-L339 i-im not sure about the strlen(ccc_str) > 3 part
22:53 samcv so it returns 0 if there's no string, otherwise returns 0 if the strings length is greater than 3
22:53 samcv because?
22:53 samcv about the returning 0 if it's greater than 3
22:53 timotimo so the segfault inside MVMCallCapture's gc_mark, right?
22:53 samcv the one in my Font::QueryInfo module?
22:53 samcv that is where it crashes
22:53 timotimo i've got it open in rr
22:53 timotimo from the whateverables
22:54 timotimo i see its data being overwritten in the utf8-c8 encoder, but that's just because it had been freed and alloced in between
22:55 timotimo we have this "owns_callsite" flag that tells us whether or not it's okay to free the thing
22:55 timotimo and if it's set, we'll memcpy and everything when we pass the thing around, right?
22:55 jnthn samcv: There are (were?) some values of the CCC property that are not integers
22:55 jnthn I forget exactly what it is but it's something like Unassigned or some such
22:55 jnthn The > 3 check is for that :)
22:56 samcv hehehe
22:56 timotimo m: say Buf.new(:16<69 2f 32 64 31 33 35 63>).decode("utf8")
22:56 camelia rakudo-moar c76d93: OUTPUT: «===SORRY!=== Error while compiling <tmp>␤Malformed radix number␤at <tmp>:1␤------> say Buf.new(:16<69⏏ 2f 32 64 31 33 35 63>).decode("utf8")␤    expecting any of:␤        number in radix notation␤»
22:57 timotimo m: say Buf.new(0x69 ,0x2f, 0x32, 0x64, 0x31, 0x33, 0x35, 0x63>).decode("utf8")
22:57 camelia rakudo-moar c76d93: OUTPUT: «===SORRY!=== Error while compiling <tmp>␤Missing required term after infix␤at <tmp>:1␤------> x2f, 0x32, 0x64, 0x31, 0x33, 0x35, 0x63>⏏).decode("utf8")␤    expecting any of:␤        prefix␤        term␤»
22:57 timotimo m: say Buf.new(0x69 ,0x2f, 0x32, 0x64, 0x31, 0x33, 0x35, 0x63).decode("utf8")
22:57 camelia rakudo-moar c76d93: OUTPUT: «i/2d135c␤»
22:57 timotimo hm, that's probably not a valid string?
22:58 samcv jnthn, looks like Not_Reordered
22:58 jnthn samcv: I guess the presence of those is why it's a str property rather than an int property anyway
22:58 jnthn Ah, right, that's the one :)
22:58 jnthn It's been more than 2 years :)
22:58 timotimo so how do i go about debugging this? i can set watchpoints to find where it gets calloced (for the string to be put in and also for the callsite to be put in), i can get a breakpoint where the string content is actually written, but how does that help me? :|
23:04 timotimo hm. maybe i can watchpoint the pointer in the arg proc context to see when the callsite gets assigned
23:04 timotimo maybe callsites should become GC-managed objects? :\
23:08 samcv looks like Not_Reordered jnthn
23:09 samcv oh i said that
23:09 samcv heh
23:12 samcv was gonna change this but it seems to break things
23:12 samcv to int
23:16 samcv err wait no maybe that was another section. going to only make this one change and run a full spectest
23:16 dogbert17 timotimo: night time bug hunting ?
23:17 timotimo i think i need to go to bed and maybe try again tomorrow
23:18 dogbert17 yeah, is about time for me as well, doing an experiment with samcv's font program
23:19 * dogbert17 wonders how long time this program is supposed to take
23:21 samcv oh yay i got it to work jnthn :) with int based ccc
23:21 samcv \o/
23:22 * dogbert17 en => NanumBarunGothic ?
23:27 dogbert17 samcv: your font program seems to write out a gazillion backtraces. Is it supposed to do that?
23:28 dogbert17 and there it completed
23:28 samcv backtraces?
23:29 samcv how so?
23:29 dogbert17 malformed base-16 number
23:29 evalable6 joined #moarvm
23:29 bloatable6 joined #moarvm
23:29 quotable6 joined #moarvm
23:29 committable6 joined #moarvm
23:29 benchable6 joined #moarvm
23:29 coverable6 joined #moarvm
23:29 bisectable6 joined #moarvm
23:29 unicodable6 joined #moarvm
23:29 greppable6 joined #moarvm
23:29 samcv that shouldn't happen
23:29 statisfiable6 joined #moarvm
23:29 samcv what system are you on
23:29 dogbert17 32 bit Linux Mint
23:29 samcv dogbert17, can you run 'prove -e perl6'
23:30 committable6 joined #moarvm
23:30 dogbert17 sec
23:31 dogbert17 test failures
23:32 dogbert17 https://gist.github.com/dogbert17/cc7bd2da7adc683cad2ef2e593d658f0
23:32 dogbert17 it looked like that when running your program as well
23:34 timotimo source => "!!#0H|>^1!|>^1!P0oWQ"   -  ?!?!?
23:34 dogbert17 :)
23:34 timotimo anyway, bedtime.
23:34 timotimo o/
23:34 dogbert17 I might possibly have a clue as to what's going on
23:35 dogbert17 samcv: does it always crash for you?
23:35 samcv every time
23:35 dogbert17 try this
23:35 samcv ah yes
23:35 samcv there's some problem with some freetypes
23:35 samcv travis did that too
23:36 dogbert17 MVM_SPESH_DISABLE=1 perl6 ...
23:36 samcv dogbert17, edit the sample program
23:36 samcv to not get charset
23:36 samcv one sec
23:36 samcv font-query-all($file, 'charset')
23:37 samcv that should do everything but charset
23:37 samcv and not show those errors
23:40 Geth ¦ MoarVM: 90e5157766 | (Samantha McVey)++ | src/strings/normalize.c
23:40 Geth ¦ MoarVM: Reorder conditional in maybe_hangul() to be more clear
23:40 Geth ¦ MoarVM:
23:40 Geth ¦ MoarVM: This makes it clear at a glance the ranges of the conditionals
23:40 Geth ¦ MoarVM: which cause it to return true.
23:40 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/90e5157766
23:40 Geth ¦ MoarVM: e92ea5a35a | (Samantha McVey)++ | src/strings/normalize.c
23:40 Geth ¦ MoarVM: Speed up ccc by making ccc_relative using integer prop lookup
23:40 Geth ¦ MoarVM:
23:40 Geth ¦ MoarVM: Gets the canonical combining class for a codepoint. Does a shortcut
23:40 Geth ¦ MoarVM: since CCC is stored as a string property, though because they are all sorted
23:40 Geth ¦ MoarVM: numerically it is ok to get the internal integer value as stored instead of
23:40 Geth ¦ MoarVM: the string.
23:40 Geth ¦ MoarVM:
23:40 Geth ¦ MoarVM: Will result in a speedup during normalization.
23:40 Geth ¦ MoarVM: review: https://github.com/MoarVM/MoarVM/commit/e92ea5a35a
23:41 dogbert17 I changed to 'say $_ => font-query-all($_, 'charset') ...' was that what you meant?
23:44 samcv dogbert17, i just pushed changes
23:44 samcv pull the latest changes and then yeah
23:44 samcv set it like that
23:44 samcv i just fixed a bug in making exceptions
23:46 dogbert17 now the exceptions are gone :)
23:46 samcv yay
23:46 samcv what version do you have btw?
23:46 samcv fc-query --version
23:47 dogbert17 fontconfig version 2.11.0
23:50 dogbert17 looks good so far
23:51 samcv wow hmm it's not crashing
23:51 samcv it crashes if i have it query the charset though
23:52 dogbert17 not if you run it with MVM_SPESH_DISABLE=1
23:52 samcv did you get a segfault when running WITH the charset?
23:52 samcv does it throw errors or does it just kill the program?
23:52 dogbert17 no, only lots of what you saw in the gist
23:52 samcv and no crashing?
23:53 samcv yeah but the program didn't crash when you ran Query-all-fonts.p6 or whatever?
23:53 samcv like. due to the exception i mean
23:53 dogbert17 it crashes if I don't disable SPESH
23:53 samcv ok
23:53 dogbert17 give it a try
23:54 samcv no crashing
23:54 dogbert17 :)
23:59 travis-ci joined #moarvm
23:59 travis-ci MoarVM build failed. Samantha McVey 'Speed up ccc by making ccc_relative using integer prop lookup
23:59 travis-ci https://travis-ci.org/MoarVM/MoarVM/builds/251352717 https://github.com/MoarVM/MoarVM/compare/06819cce287d...e92ea5a35abb
23:59 travis-ci left #moarvm

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary