00:14 FROGGS joined 01:13 jnap joined 02:09 cognominal__ joined 02:12 japhb_ joined 02:13 lizmat_ joined 02:15 chipdude_ joined 02:17 jnap1 joined 02:20 FROGGS joined 02:30 dalek joined 02:36 chipdude joined 02:37 d4l3k_ joined 02:38 benabik joined 02:39 japhb joined 02:41 FROGGS_ joined 02:44 rblackwe_ joined 02:46 jnthn_ joined 02:54 FROGGS__ joined 03:00 __rnddim__ joined, lizmat joined 03:09 jnthn joined 03:30 japhb_ joined 04:18 ingy joined 05:48 woosley joined 07:33 FROGGS__ joined 08:15 rblackwe joined 08:21 JimmyZ joined 08:23 dagurval joined 08:26 JimmyZ joined 08:42 odc joined 10:27 lizmat joined 10:30 woolfy joined 10:57 woolfy left 11:32 ingy joined 11:59 harrow joined
timotimo i'm thinking about adding a histogram that counts how often which REPRs have been inlined 12:32
would a p6opaque ever inline a p6opaque?
i would *think* that that would flatten out the p6opaque 12:33
timotimo looks at the storage spec
ah yes, P6opaque says it's SPEC_REFERENCE 12:36
that's good 12:37
jnthn At present, no 12:41
In the future, maybe...to support compact structs.
timotimo mhm 12:42
hm, how should i handle this ...
should i just go through the flattened stables, grab the REPRs of each and pick out the names, then compose them into a string a la [bigint,bigint,num] or something? 12:44
(also: strip out leading P6)
jnthn You could do that to show any flattened in reprs, yeah
There's a flattened_stables array 12:45
Any slot with a NULL in there is a reference type
timotimo should i follow references at least one level as well? 12:48
another thing i could do is figure out how many buckets in VMHashes are taken and the same for VMArray perhaps
oh, VMArray can has Str or Obj slots 12:58
or ints, of course, and nums
14:03 jnap joined
timotimo i wonder how i should display the "wastage" of VMArray slots 14:26
have 10% wide buckets for wastage? count how many times any given number of slots has gone to waste?
jnthn What's wastage, ooc? 14:27
Could just do % in use?
Trouble is that the analysis is a bit simplistic
timotimo i claim wastage is how many slots are allocated that are not being used at the moment 14:28
of course that's simplistic, but if we see a spike at 99% wastage, that would mean something :)
jnthn Right, but that doesn't mean they weren't at some point.
timotimo at least half must have been used at one point
jnthn For example, bstack/cstack in parsing typically finish up empty.
timotimo mhm
this is also an "in between" measurement 14:29
you could get the heap analysis done at any point where you have access to a tc, i'm just doing it at the beginning and end of MVM_gc_enter_from_allocator at the moment
14:32 colomon joined
timotimo i'm not sure i'm doing this right 14:46
i'm dividing ArrayBody's elems by ArrayBody's ssize 14:48
and i get strange numbers
jnthn Hopefully between 0 and 1? 14:49
timotimo 6757408800 for example
jnthn o.O 14:50
14:50 benabik joined
timotimo am i miscasting? 14:50
TimToady I'm getting weird numbers like that in one my RC examples
timotimo if the repr is VMArray, i cast the object to an MVMArray
that may just be completely wrong? 14:52
given the extra M?
jnthn timotimo: No, sounds right 14:53
timotimo strange. i shall investigate
{elems = 18003936, start = 36623056, ssize = 0, slots = {o = 0x15655d0, s = 0x15655d0, i64 = 0x15655d0, i32 = 0x15655d0, i16 = 0x15655d0, i8 = 0x15655d0 "", n64 = 0x15655d0, n32 = 0x15655d0, u64 = 0x15655d0, u32 = 0x15655d0, u16 = 0x15655d0, u8 = 0x15655d0 "", any = 0x15655d0}} 14:54
jnthn Sorry I can't be more help. I've 30 mins to finish the slides for my talk tonight :)
timotimo ah!
jnthn uh, that loosk hosed :P
timotimo then go forth and be productive :)
jnthn Did you case to MVMArrary or MVMArrayBody?
timotimo no
i casted MVMObjectStooge to MVMArray and got its ['body'] 14:55
well, with a * after each type of course
jnthn That should work.
timotimo i tend to agree :) 14:56
well, i'll leave it be for now. 14:57
seems like sometimes it's hosed, sometimes not. 14:59
could it be that it's an stable or type object with that repr?
that doesn't make a lot of sense to me right now. 15:00
jnthn Well, type object with that repr would mean you look at junk, sure 15:02
But that's rare, I suspect.
timotimo not very, if i can trust my output 15:03
N/A [================================================= 1297
inv [=== 82
N/A is division by zero
inv is "clearly invalid numbers"
(that's before the gc run) 15:04
0 [== 28 15:07
10 [====== 88
20 [==== 53
those are the highest usage percentages
er ...
the ones we found most often 15:08
(buckets of ten)
the flags of the objects that turn out to be "inv" are all 0 15:13
(4 after the collection for most of them, for obvious reasons) 15:14
jnthn commute & 15:38
timotimo commutes as well
TimToady here's my bug: gist.github.com/anonymous/8977350 15:40
(it's a cut-down version of rosettacode.org/wiki/Numerical_inte...on#Perl_6)
somehow using do instead of () around the 'for' makes it reuse the &f from the previous call 15:42
you can determine this by putting a say into the functions; the second one never gets called
it's like 'do' is imposing some sort of state or global semantics 15:43
or reusing something it shouldn't 15:44
also, this is moarvm only, works fine on -j and -p 15:47
m: gist.github.com/anonymous/8977597 15:51
camelia rakudo-moar 0d2b68: OUTPUTĀ« exact result: 0.25ā¤ rectangle method left: 0.245025ā¤ exact result: 4.60517018598809ā¤ rectangle method left: 2378916309.88410399ā¤Ā»
TimToady that's cut down some more 15:52
EVAL didn't matter
the last number there should be about 5.17098406528658
oh, and it doesn't matter if you change the 'do' to an 'eager' or a 'lazy' 15:56
and it fails differently if you flip the for loop around to a standard one, ends up with 455.427689060903 somehow 16:05
a bare map works fine, but a 'do map' fails 455 again 16:07
very odd
FROGGS jnthn: when I run the thing in gdb until it hangs, and I interrupt it, there is a uv__epoll_wait and uv__io_poll in the bt 16:34
jnthn: I am not sure though that this information is reliable 16:35
jnthn: you know I am a friend of printf... how do I printf the instructions that moar is processing? 16:38
so I could see the last instruction before the hang
ohh, hmmm, maybe --dump will do
ummm, coredump
17:04 lizmat joined 17:05 woolfy joined 17:11 woolfy1 joined 17:17 woolfy joined 17:39 FROGGS joined 17:42 FROGGS_ joined
timotimo is there some simple way to register the desire to start/stop receiving line number change events through the runloop? 18:07
like, whenever execution reached a different source line
18:55 tgt joined 19:01 jnap joined 20:11 tgt joined 20:21 lue joined
jnthn FROGGS: If you look far enough down the stack, you should find a frame in interp.c 21:11
timotimo later this evening i might use an implementation of hilbert curves to illustrate the fragmentedness of the gen2 pages 21:12
FROGGS jnthn: so I can trust the bt when I hit ctrl+c? 21:13
jnthn: btw, panda's current blocker is the STable thingy
jnthn FROGGS: OK. I'll look into it after the IO work 21:14
FROGGS cool
I'll have a look if it happens on windows also
nwc10 jnthn: you are back from your talk? 21:15
jnthn Yes :)
It was fun. For me at least. :)
nwc10 good
jnthn Also had a rather amusing bit of audience participation 21:16
TimToady er, what were you talking about?
jnthn I was doing basic sentiment analysis on live Twitter feeds, and one guy managed to write a tweet that got into my feed. :)
TimToady: Rx, mostly. With a detour into event sourcing. 21:17
timotimo reactive extensions; that is C# i guess?
jnthn Originally, but now it's been ported all over.
And was where Supplies came from in Perl 6 :) 21:18
timotimo fair enough :)
TimToady r: gist.github.com/anonymous/8977597
jnthn Now I just need to get enough stuff in place in Perl 6 so I can do a Perl 6 version of the talk :)
camelia rakudo-moar 1ce379: OUTPUTĀ« exact result: 0.25ā¤ rectangle method left: 0.245025ā¤ exact result: 4.60517018598809ā¤ rectangle method left: 2378916309.88410399ā¤Ā»
..rakudo-jvm 1ce379: OUTPUTĀ« exact result: 0.25ā¤ rectangle method left: 0.245025ā¤ exact result: 4.605170185988092ā¤ rectangle method left: 5.170984065286576ā¤Ā»
..rakudo-parrot 1ce379: OUTPUTĀ« exact result: 0.25ā¤ rectangle method left: 0.245025ā¤ exact result: 4.60517018598809ā¤ rectangle method left: 5.17098406528658ā¤Ā»
TimToady note the last number for moar 21:19
jnthn Hm, all different
uh, yes, that's veyr different
timotimo okay, time for some bikeshed painting
what should the diff'd histograms look like
jnthn You golfed it further in backlog, though?
TimToady there's a 'do' in there that works right if one uses () around the loop instead
timotimo either something like P6opaque [========-------- 50/100
TimToady but otherwise gets the wrong function pointer somehow 21:20
timotimo or maybe P6opaque =====][============ 50/100
jnthn Ooops
TimToady that's the golfed one
jnthn I made Moar assume a few more things about correct code-gen with regard to outers.
It tends to show up stuff that accidentally but inefficiently works elsewhere. I suspect this is one of them.
timotimo making all backends more efficient by being more strict. i like it! 21:21
TimToady seems a bit like something got inlined as shouldn'ta
jnthn TimToady: Could also be something like that.
timotimo so --optimize=off makes it work again?
jnthn Yeah, that'd be the thing to try
Moar isn't yet doing VM level inlining
TimToady certainly &f as a param shouldn't inline
jnthn Anyway, will take a look. 21:22
timotimo: Yeah, I also plan to switch the JVM backend to the same model as Moar. 'cus currently the JVM one makes some threading mistakes...
timotimo oh oops :) 21:24
FROGGS jnthn: there seems to be an issue with panda on windows, so let me fix that before you thing about STables 21:34
jnthn FROGGS: Did you fix the dir thing? 21:38
FROGGS jnthn: at least on linux, yes
not sure what is wrong on windows yet
jnthn k 21:39
FROGGS uhh, found it I think 21:40
21:42 lizmat joined
dalek arVM/gdb-support: 1beb871 | (Timo Paulssen)++ | moar-gdb.py:
started work on a gdb plugin for moar-related datastructures
22:00
MoarVM/gdb-support: 3700036 | (Timo Paulssen)++ | / (16 files):
MoarVM/gdb-support: Merge remote-tracking branch 'origin/master' into gdb-support
timotimo here comes my gdb stuff
22:00 dalek joined
FROGGS jnthn: when I strip File::Find's weird tests it get stuck building JSON::Tiny :( 22:02
jnthn Stuck? 22:03
FROGGS it hangs 22:04
probably in the ML too
timotimo should i push for gen2 support first or should i rather get the "what do the several P6opaques inline?" stuff going? 22:05
jnthn timotimo: Does this need to be in the root directory, or could it go in tools/ ? 22:06
timotimo sure could. as long as the user ln's it right next to the moar binary
i ln'd it to install/, too
that way, gdb will auto-load it whenever you attach something that has a moar running in it
actually ... i probably want to target libmoar instead of moar
jnthn timotimo: If you put it in tools, I'm fine with you working on it in master, fwiw.
FROGGS I'll continue tomorrow (e.g. fixing File::Find) 22:07
timotimo could do that. but before i push it into master i want to spice the code up with comments and mark things that don't work yet more clearly
jnthn FROGGS: OK. I may get a little more IO done today, but I'll probably not stay up too late... 22:08
timotimo: OK, cool :)
I'll have to try this out at some point soon :)
timotimo i hope you can make some sense out of it
you can go as fine-grained as you want with the nursery analysis, fwiw, and diff any two snapshots if you supply two integers as the argument to diff-moar-heap 22:09
"make some sense out of it" meaning "get useful information out of the analysis" 22:11
jnthn Oh... :) 22:12
I can probably make sense of the code too though :)
timotimo yeah, since you know about the internals of moarvm already, it shouldn't be too terrible 22:14
jnthn Yeah. And that helps me interpret it too. :)
timotimo oh, surely :D 22:15
jnthn the output, that is
timotimo oh, i thought you would use the references to MVMThings in the python code to understand it :3
jnthn Python mostly falls into "it's a mostly imperative, managed, OO language, so I can read it" :) 22:16
timotimo i found myself missing a few perl6y things along the way
oh well.
it's dog slow even on CPython, though, which makes me feel more at home %) 22:17
jnthn bah, of all the slides to photo from my talk... twitter.com/_FooCafe_/status/434015184340791296 :) 22:19
timotimo %)
FROGGS hehe 22:20
23:29 colomon joined