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
|