01:05 pochi joined 02:38 vendethiel joined 03:36 cognominal joined 06:45 domidumont joined 06:49 domidumont joined 07:26 domidumont joined 07:31 FROGGS joined 07:39 domidumont1 joined 07:59 domidumont joined 08:04 domidumont joined 08:39 zakharyas joined 09:06 mojca joined
dalek arVM/heap-profiler: 60db2be | jnthn++ | / (5 files):
Sketch in heap profiler data structures.
10:25
arVM/heap-profiler: b7b62cb | jnthn++ | src/ (5 files):
Refactor to prepare for multiple profilers.

We don't need to mark tc->cur_frame twice.
Was harmless, and not a big waste 'cus its mark generation would have already been set to the current collection. But still, a waste of a few lines of code.
jnthn (force-pushed rebase)
10:26 dalek joined
nwc10 OMG you killed dalek 10:26
jnthn I'm a b... :P
Let's see if I can get his heap snapshot thingy to actually spew out some data 10:27
nwc10 I'm sure that part is easy 10:31
but can you make it spew out *useful* data
jnthn Easy in the sense of "as hard as implementing a GC mark" :) 10:33
Though in reality easier 'cus it doesn't need doing in parallel :) 10:34
yay, my meat delivery just came \o/ 10:42
10:42 domidumont1 joined 10:43 zakharyas joined 10:49 domidumont joined
arVM/heap-profiler: d15aee7 | jnthn++ | src/gc/ (2 files):
Move thread object mark into thread root mark.

No reason for it to specially be mentioned in collect.c.
arVM/heap-profiler: f9b85f2 | jnthn++ | src/profiler/heapsnapshot.h:
Add one more kind of root source.
11:02
arVM/heap-profiler: f647934 | jnthn++ | src/profiler/heapsnapshot.c:
Todo list of root sources for heap snapshot.
arVM/heap-profiler: b6f03ff | jnthn++ | src/profiler/heapsnapshot.h:
A few heap snapshot data structure clean-ups.

Size tweaking, name tweaking.
12:38
arVM/heap-profiler: 3d5f4dc | jnthn++ | src/profiler/heapsnapshot.c:
Sketch in snapshot worklist processing.
12:40 FROGGS joined 13:35 domidumont joined
dalek arVM/heap-profiler: 46f2f2b | jnthn++ | src/profiler/heapsnapshot. (2 files):
Start recording names of root relations.
15:15
arVM/heap-profiler: f32209d | jnthn++ | src/profiler/heapsnapshot.c:
Set collectable kind field.
arVM/heap-profiler: 34e6672 | jnthn++ | src/profiler/heapsnapshot.c:
Clear up strings.
arVM/heap-profiler: 032a5e6 | jnthn++ | src/profiler/heapsnapshot.c:
Turn collected data into MoarVM objects.

Done once we've collected all snapshots, so it doesn't influence them.
15:27
arVM/heap-profiler: cee52dd | jnthn++ | src/ (3 files):
Refactor to expose heap snapshot state.

We'll need it to be API.
15:46
arVM/heap-profiler: 4f01eb1 | jnthn++ | src/ (5 files):
Add permanent roots into the heap snapshot.
15:58
arVM/heap-profiler: 279e57c | jnthn++ | src/profiler/heapsnapshot.c:
Fix thinko in "should we free this" string flags.
16:16
arVM/heap-profiler: 8a509f1 | jnthn++ | src/profiler/heapsnapshot.c:
Cheating handling of objects, STables, frames.

Doesn't actually walk their references yet.
arVM/heap-profiler: 1327f65 | jnthn++ | src/ (4 files):
Add instance roots to heap snapshot.
16:31
arVM/heap-profiler: 5486585 | jnthn++ | src/profiler/heapsnapshot.c:
Make heap snapshots aware of multiple threads.
16:46
arVM/heap-profiler: 71f28f1 | jnthn++ | src/ (5 files):
Add temporary C stack roots to heap snapshot.
16:57
diakopter jnthn: will it ever try to clean up the C strings alloc'd by the various printf formats in the low level exception error messages?
jnthn diakopter: We already do in many (most?) cases, I think 16:59
grep for "waste"
diakopter ohhh 17:03
dalek arVM/heap-profiler: 6065388 | jnthn++ | src/ (4 files):
Add thread context roots to heap snapshot.
17:12
arVM/heap-profiler: 271b763 | jnthn++ | src/profiler/heapsnapshot.c:
Add the current frame to the snapshot.
17:12 vendethiel joined
jnthn Well, that's us adding all of the roots into it. 17:13
Time for a break, me thinks :) 17:14
17:45 zakharyas joined 18:35 Ven joined 18:51 Ven_ joined 19:04 Ven joined 19:23 FROGGS joined 19:31 patrickz joined 19:35 Azry joined 19:49 brrt joined 19:51 rubio_terra joined
brrt good * #moarvm 19:55
diakopter hiii
brrt hi diakopter 19:58
jnthn o/ brrt 19:59
brrt good fix jnthn :-) 20:01
subtle, too
Azry Hi! I'm currently looking in p6 for a method to create a filehandle from a file descriptor. I can see that nqp oplist does the reverse, which corresponds to the "fileno_fh" line in the oplist. Is it planned to add such a method to p6/nqp in the future ? 20:12
jnthn Azry: Not planned yet, but if there's demand for it, it should be possible to do. 20:13
lizmat jnthn: if we could do that, could we get rid of special casing STDIN/STDOUT/STDERR ? 20:16
Azry well, i'm trying to port io::pty to p6 and posix_openpt() gives me a file descriptor, so i would need it to create a proper IO::Handle. I don't know if that is a good enough reason
jnthn Azry: Sounds reasonable enough to me 20:20
Azry cool =)
jnthn Azry: Not sure, without thinking about it some more 20:21
oops 20:22
lizmat: ^^
lizmat jnthn: yeah, just pointing out maybe another benefit :-)
Azry ah ok lol
:(
ah, uh now i feel dumb 20:24
jnthn Azry: Heh, no, I meant your request sounds reasonable enough, I was being unsure about lizmat's suggestion :)
Azry =)
jnthn stops confusing folks and goes back to writing the heap profiler...
20:24 Ven joined
lizmat
.oO( that'd be confusing enough :-)
20:24
jnthn It's a bit like writing a garbage collector that doesn't bother to collect :) 20:26
Azry so, do i have to register an issue on github, or something ? 20:29
jnthn Azry: I'd file it in the Perl 6 RT (that is, as a Perl 6 feature request) 20:30
That's where "full stack" things tend to go 20:31
Azry okay i'll to it, thank you =) 20:32
dalek arVM/heap-profiler: a8caa75 | jnthn++ | src/profiler/heapsnapshot.c:
Offer own/const/dup options for snapshot strings.

We'll need all three of them.
20:43
arVM/heap-profiler: 5d64386 | jnthn++ | src/profiler/heapsnapshot.h:
Simplify the types table.

These will just be references into the strings heap. Keeps things a lot simpler.
arVM/heap-profiler: af15fbc | jnthn++ | src/profiler/heapsnapshot.c:
Annotate MVMCollectables with type.
20:54
arVM/heap-profiler: b93ca4f | jnthn++ | src/profiler/heapsnapshot.c:
Add type table to output.
arVM/heap-profiler: 8c144c4 | jnthn++ | src/profiler/heapsnapshot.c:
Add object's STables into the heap snapshot.
21:00
arVM/heap-profiler: bd38593 | jnthn++ | src/profiler/heapsnapshot.c:
Include SC reference into heap snapshot.
21:16
21:31 mojca joined
dalek arVM/heap-profiler: 40a212c | jnthn++ | src/ (3 files):
Add a seen hash for collectables/frames.

So that we don't duplicate them in the snapshot, and can handle ciruclar data structures.
21:43
arVM/heap-profiler: 902d23f | jnthn++ | src/profiler/heapsnapshot.c:
Fix copy-pasta.
21:47
arVM/heap-profiler: faca3aa | jnthn++ | src/profiler/heapsnapshot. (2 files):
Use gc_mark to walk heap objects.

In the longer run, we'll add an optional REPR API to enable more detailed output (including attribute names, for example).
21:49
jnthn That last commit gets us really doing serious volumes of data collection :)
We're missing walking STables and frames still 21:55
But, enough for today :)
Even with some stuff missing, 1.4MB of profile output for an empty NQP already. And over 100,000 inter-object references. 22:00
And that's for a run with a single snapshot. :) 22:01
'night 22:04
lizmat good night, jnthn
timotimo gnite jnthn 22:07
22:18 ilbot3 joined
timotimo i don't know how exactly jnthn is testing the heap profiler stuff 23:25
nqp doesn't yet have a branch for dumping that, i think
i suppose he's just gdbing the data 23:26
.o( we could totally be building nqp-gdb-m and nqp-valgrind-m launchers ) 23:27
yay 23:50
{"types":"", "strings":[], "snapshots":[]} 23:51
23:56 geekosaur joined