CObj
These functions explore objects recursively and may allocate a lot.
This time, all the size of objects are computed with respect to a larger object containing them all, and we only count the new blocks not already seen earlier in the left-to-right visit of the englobing object.
Provides the global object in which we'll search shared sizes
Shared size (in word) of an object with respect to the global object given by the last register_shared_size
.
Same, with an object indicated by its occurrence in the global object. The very same object could have a zero size or not, depending of the occurrence we're considering in the englobing object. For speaking of occurrences, we use an int list
for a path of field indexes (leftmost = deepest block, rightmost = top block of the global object).
Return the (logical) value size, the string size, and the maximum depth of the object. This loops on cyclic structures.