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.
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.
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.
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.
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.
arVM/heap-profiler: cee52dd | jnthn++ | src/ (3 files):
Refactor to expose heap snapshot state.

We'll need it to be API.
arVM/heap-profiler: 4f01eb1 | jnthn++ | src/ (5 files):
Add permanent roots into the heap snapshot.
arVM/heap-profiler: 279e57c | jnthn++ | src/profiler/heapsnapshot.c:
Fix thinko in "should we free this" string flags.
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.
arVM/heap-profiler: 5486585 | jnthn++ | src/profiler/heapsnapshot.c:
Make heap snapshots aware of multiple threads.
arVM/heap-profiler: 71f28f1 | jnthn++ | src/ (5 files):
Add temporary C stack roots to heap snapshot.
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.
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
.oO( that'd be confusing enough :-)
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.
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.
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.
arVM/heap-profiler: bd38593 | jnthn++ | src/profiler/heapsnapshot.c:
Include SC reference into heap snapshot.
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.
arVM/heap-profiler: 902d23f | jnthn++ | src/profiler/heapsnapshot.c:
Fix copy-pasta.
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).
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