Use heap parsing for objprof
Summary: Parsable heap means we don't need a hashtable to keep track of objects.
Change heap iteration to take a snapshot of the objects in the heap,
then iterate over them. Populating a vector of pointers is probably more
efficient than using the unordered_set for a single snapshot, but could
lose if many snapshots are taken in the same request.
Looking at the inner loop code in objprof_get_data/strings, I don't think
the snapshot cost is significant; they're converting objects to arrays,
accessing the arrays, and so on. Taking a snapshot also avoids mutating
the heap (allocating arrays, etc) while we are iterating over it.
Reviewed By: @markw65
Differential Revision:
D1711579