Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2014-05-01

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

All times shown according to UTC.

Time Nick Message
00:00 cognominal joined #moarvm
00:32 cognominal joined #moarvm
01:31 FROGGS joined #moarvm
01:56 FROGGS joined #moarvm
04:10 FROGGS joined #moarvm
05:16 jnap joined #moarvm
06:16 jnap joined #moarvm
06:35 cxreg joined #moarvm
06:47 FROGGS joined #moarvm
07:08 zakharyas joined #moarvm
07:17 jnap joined #moarvm
08:18 jnap joined #moarvm
08:41 lue joined #moarvm
09:16 nwc10 jnthn: mininal ASAN failing test case: http://paste.scsys.co.uk/362486
09:16 nwc10 fails to get to the second say
09:16 nwc10 no idea why ASAN is adamant about:
09:16 nwc10 0x600800396f6c is located 28 bytes inside of 40-byte region [0x600800396f50,0x600800396f78)
09:16 nwc10 but I think that that might be the clue
09:19 jnap joined #moarvm
09:21 jnthn nwc10: Yeah. Don't immediatley see what's going on there. Hmmm.
09:23 jnthn freed by thread T1 here: #0 0x7ffff4e6347a (/home/nicholas/Install/gcc482/lib64/libasan.so.0.0.0+0x1547a) #1 0x7ffff4551eaf (/home/nicholas/Sandpit/moar-san/lib/libmoar.so+0x2f8eaf)
09:24 nwc10 yes, I can't get that trivially from ASAN
09:24 jnthn There's not a way to get that mapped to a human-readalbe file/line, is there?
09:24 jnthn ah, ok
09:24 nwc10 building ASAN-free to use valgrind
09:24 nwc10 maybe 15 minutes until I can answer that
09:24 nwc10 and I still haven't got to the hammock yet
09:25 jnthn Just trying to figure out if it's ctx that's bad or ctx->callsite
09:25 jnthn Looking at the addresses, I guess ctx->callsite
09:26 nwc10 I think that it's the latter, but has_flattening has the wrong offset
09:30 nwc10 jnthn: http://paste.scsys.co.uk/362496
09:32 nwc10 if (storage) free(storage); /* not thread-safe */
09:32 nwc10 that's line 1134 of ops.c
09:32 nwc10 which really really isn't a callsite
09:32 nwc10 but the problem may well be "It's not thread-safe."
09:32 nwc10 like 1094
09:32 nwc10 er, line 1094
09:33 nwc10 I'm not sure *how* it ends up correctly freeing something totally wrong
09:40 jnthn Sorry, ahd phone call
09:40 jnthn One that told me my May will be an iota less stressful than first expected. :)
09:41 FROGGS less stressful outside of this channel :o)
09:41 jnthn nwc10: wtf??!!!
09:41 jnthn I don't even...
09:42 jnthn The only thing I can imagine is that an object is unmarked, we look into it, and pull out a completely arbitrary memory address...somehow.
09:42 nwc10 jnthn: I'm agreeing with the wtf??!!‽⸘ELEVEN etc
09:43 * FROGGS .oO( how could this have ever worked? )
09:43 nwc10 oooh, !!⒒
09:43 nwc10 and some other stuff I don't have fonts for
09:43 FROGGS "ELEVEN etc" <-- *g*
09:44 nwc10 FROGGS: I'm assuming that the comments predicting doom, gloom, lack of thread safety, old ones, etc are reasonably accurate
09:44 nwc10 and it's to do with crossing the streams. Er, using more than one thread
09:44 nwc10 but I can't see *how*
09:44 jnthn Probably but...I think in this case it's doing it in a place where the thread is the only owner of the string in question...
09:45 nwc10 Unicode++ # does not yet have a "spinner" character, let alone one that a terminal would animate
09:45 nwc10 I hope I don't give them ideas
09:46 jnthn shhh! :P
09:50 nwc10 jnthn: helgrind has a *lot* to say: http://paste.scsys.co.uk/362510
09:52 nwc10 I'm not experienced with helgrind, so I can't offer any advice on what it's saying
09:52 nwc10 I have Rakudo at ff04467628de2a004489ef31fdb8eb745c31f141
09:52 nwc10 nqp at b596f16f9ecfb413fe7b11a576ec562c23046622
09:52 nwc10 MoarVM at 405b1ec9a67131dcec363bdba982161936a2c1c0
09:53 jnthn if (++static_frame_body->invocations >= 10 && callsite->is_interned) {
09:53 nwc10 and that was helgrind from valgrind-3.8.1
09:53 jnthn /* Rough call count. May be hit up by multiple threads, and lose the odd
09:53 jnthn * count, but that's fine; it's just a rough indicator, used to make
09:53 jnthn * decisions about optimization. */
09:53 jnthn MVMuint32 invocations;
09:53 jnthn :)
09:53 nwc10 OK.
09:54 nwc10 ideally would be a nice to have an optional way to build that is strictly correct
09:54 nwc10 I think technically it's also possible to do a suppression file
09:55 jnthn *nod*
09:55 jnthn Some of them may be legit, of course.
09:55 nwc10 was going to try to suppress just that one
10:06 dalek MoarVM: 0487e37 | jonathan++ | / (8 files):
10:06 dalek MoarVM: Add MVMNull REPR, instance->VMNull.
10:06 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/0487e37818
10:06 dalek MoarVM: 2de460c | jonathan++ | src/6model/reprs/MVMNull.h:
10:06 dalek MoarVM: Add static inline func for doing a VM-null check.
10:06 dalek joined #moarvm
10:19 jnap joined #moarvm
10:33 dalek joined #moarvm
11:06 donaldh joined #moarvm
11:13 donaldh joined #moarvm
11:20 jnap joined #moarvm
12:21 jnap joined #moarvm
12:38 nwc10 jnthn: seems that only 6 of the helgrind complaints are about that one
13:22 jnap joined #moarvm
14:22 jnap joined #moarvm
14:24 donaldh joined #moarvm
14:31 jnap joined #moarvm
14:44 dalek MoarVM: aa7bbef | jnthn++ | src/ (5 files):
14:44 dalek MoarVM: Lazily allocate lexical containers.
14:44 dalek MoarVM:
14:44 dalek MoarVM: This means that most of the time we won't allocate $/ and $!, and
14:44 dalek MoarVM: perhaps $_ too, when they are never used.
14:44 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/aa7bbef94d
15:03 timotimo sounds like i ought to start a benchmark run soon, eh? :)
15:08 jnthn timotimo: go for it :)
15:16 jnthn walk, pondering stuff &
15:16 timotimo bon marcher
15:31 nwc10 jnthn: you're determined to continue an endangered skill? http://www.bbc.co.uk/news/magazine-27186709
15:39 japhb jnthn: Where is the current version of the rakudo-nqp-backends layering block diagram?  I'd like to use it in my talk-in-progress, if that's OK ....
15:48 jnthn nwc10: I actually walk pretty often in cases where I could hop on public transport for a couple of stops. :)
15:53 jnthn japhb: Not quite sure what diagram you mean, unless it's one I've done in a talk sometime, in which case it's been a while...
15:56 timotimo jnthn: should i manually bump the moar revision in nqp and the nqp revision in rakudo to get the benchmark data? or should i trick p6bench into building master again? :)
15:59 jnthn timotimo: Whatever's easiest for you. It seems to not regress spectests.
15:59 * timotimo faked it
16:01 FROGGS japhb: I think you mean one from the talk given at YAPC::NA 2013, and that talks was given by pmichaud I think
16:05 japhb FROGGS: Huh, I thought jnthn gave the most recent one.  Ah well.
16:06 japhb jnthn: I was talking about the one that shows what parts of the stack are Perl 6, what's NQP, and what's VM specific.
16:07 FROGGS japhb: this? http://youtu.be/XgPh5Li3k4g?t=24m58s
16:27 nwc10 jnthn: HEAD/HEAD/HEAD~2 works on "my" machine, apart from previously known fun
17:11 japhb FROGGS: Now that I'm near sufficient bandwidth not to annoy my peers, I took a look.  Yes, that's the correct diagram -- but that was from before MoarVM was added to it.
17:11 japhb I'm looking for one after MoarVM became "official".
17:13 FROGGS hmmm, maybe jnthn knows any of his slides where that is in :o)
17:15 LLamaRider joined #moarvm
17:21 japhb FROGGS: I've looked through several of his most recent Rakudo and MoarVM decks, and didn't see one new enough.
17:21 japhb Hmmm, I wonder ...
17:22 LLamaRider joined #moarvm
17:23 japhb Gah, not in the internals course, either.  :-/
17:33 jnthn japhb: Yeah, I don't remember doing a recent one of those.
18:18 timotimo jnthn: http://t.h8.lv/p6bench/2014-05-01-vmnull.html - we can't quite stop doing the optimization thing just yet
18:21 timotimo jnthn: please don't ask me why some of the benchmarks start out very slow
18:22 FROGGS timotimo: can I ask why there is no rakudo/nom and no perl5 included? :P
18:23 FROGGS I can only read benchmarks when I can compare something
18:23 timotimo hmm
18:23 timotimo rakudo/nom is eager_vivification
18:23 FROGGS ohh
18:23 timotimo nom/master/master is lazy_vivification
18:51 btyler joined #moarvm
18:52 daxim joined #moarvm
20:11 japhb jnthn: Is there editable source for that block diagram I was asking about earlier, like an SVG file?  Maybe my best course of action is just to update it.  :-)
20:11 jnthn japhb: For Pm's, maybe. Mine was drawn in Powerpoint...
20:21 timotimo jnthn: what's the next amazing optimization opportunity?
20:21 timotimo if we introduce a fact KNOWN_NONNULL, we can optimize these isstr, islist, ... things away
20:21 FROGGS timotimo: implement labels for jvm to optimize user experience? *g*
20:27 lizmat timotimo: perhaps low hanging fruit, but there is a candidate for slice :delete access in sink context
20:28 lizmat look for :$SINK! in array_slice / hash_slice.pm
20:29 timotimo i'll keep it for #monday :)
21:09 lue joined #moarvm
22:22 japhb #monday?  Are you just referencing p6weekly in a general sense, or does the '#monday' tag now do something special?
22:28 timotimo it doesn't do something special
22:29 timotimo except for this very case i'll probably search for it :)
22:52 colomon joined #moarvm
23:08 dalek MoarVM: 4050a53 | jnthn++ | src/core/frame.c:
23:08 dalek MoarVM: Optimize frame allocation.
23:08 dalek MoarVM:
23:08 dalek MoarVM: Use calloc rather than malloc + memset.
23:08 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/4050a53cf2
23:08 dalek MoarVM: ca47831 | jnthn++ | src/core/frame.c:
23:08 dalek MoarVM: Remove unrequired memory barriering.
23:08 dalek MoarVM:
23:08 dalek MoarVM: We didn't expose the frame anywhere else at the point we set these, so
23:08 dalek MoarVM: no need to barrier.
23:08 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/ca4783111d
23:10 jnthn timotimo: One thing that may help a bit is to teach spesh about nqp::can
23:10 timotimo oh! aye
23:10 jnthn Just looking at the forest fire C-level profile and can is actually the leading cause of hash lookups...
23:11 timotimo 16/43 benchmarks for rakudo-jvm >_>
23:11 jnthn Yeah, and goalposts moved again. 18b7e2e I just did in Rakudo got me a 5%-10% improvement on ff.
23:11 timotimo would people mind if i set up a public gobby server on raduko.org or something like that?
23:11 timotimo oh dang!
23:11 timotimo er, but what's ff?
23:12 jnthn forest fire
23:12 timotimo i forgot what perl6 server i had access to and with what username and ssh key >_<
23:12 timotimo oh, that's good!
23:15 jnthn Reducing GC pressure will only help so much in forest fire, it seems...
23:15 jnthn 'cus it's already down at around 12.5%
23:16 timotimo 12.5% what?
23:16 timotimo time spent in the gc?
23:16 jnthn Of runtime.
23:16 timotimo ah
23:16 timotimo yes, we want to get that back up to 50% while keeping the gc run time constant :)
23:16 jnthn Which as things go is quite good.
23:16 timotimo aye
23:16 jnthn I've been doing some pondering on spesh
23:17 jnthn I think I'm going to give it a "logging"/"data-collection" pass
23:17 jnthn So it can gather a load more info, that it can use to make guarded assumptions.
23:17 jnthn Also thought a bit about your "can haz spare register" question.
23:18 timotimo that sounds good
23:18 timotimo got an answer yet?
23:18 jnthn I wondered if the simplest way isn't to simply reserve some extra space after the arg buffer
23:18 jnthn Currently we have
23:19 jnthn ->work pointing to a block of memory like | ...locals... | ...space to put args when calling... |
23:19 jnthn We could sneak an extra pair of registers after that.
23:19 jnthn One you can use for a .o/.s, the other for a .i/.n
23:20 jnthn For inlining, I realized the easiest way is to just concatenate the chunks.
23:21 jnthn 'cus then it's dead easy (memcpy) to grab them out when we de-opt
23:21 timotimo oh?
23:21 timotimo well, that sounds lovely
23:21 jnthn Writing the deopt bit of inlining is going to be "fun"...
23:22 jnthn In so far as if it happens, we'll need to make the frames we optimized away suddenly start existing.
23:22 timotimo ah, yes
23:23 jnthn I also realized that "how do we get stacktraces right when we've inlined" can be dealt with by just de-opting.
23:24 timotimo aye
23:40 lue joined #moarvm

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