How to use the PoolDescriptor in ds-aa alias analysis?

Dear Staff,
     I am reading the paper "Making Context-sensitive Points-to Analysis with Heap Cloning Practical For The Real World", and I build the poolalloc module, and run the program in Figure 1 in this paper with -ds-aa alias analysis. Now I know that X and Y in the program would have distinct PoolDescriptors to make them disjoint data structures.
     However, how can we use the PoolDescriptor? What is storing in it? It seems that the PoolDescriptor in the program is just parsed as an argument from top to down, but it is not modified, so I am a little confused.

Thanks,
Heming

Pool descriptors get allocated before the data in the pool starts to exist.
After that, pointers to those pool descriptors get passed around. If you are
the only poolalloc user, then you can use the pools in any way you want. If
you just want an ID for a pool, it should be safe to not release pools and
just return unique pointers from the pool allocator.

Torvald

Dear Staff,
    I am reading the paper "Making Context-sensitive Points-to
Analysis with Heap Cloning Practical For The Real World", and I build
the poolalloc module, and run the program in Figure 1 in this paper
with -ds-aa alias analysis. Now I know that X and Y in the program
would have distinct PoolDescriptors to make them disjoint data
structures.
    However, how can we use the PoolDescriptor? What is storing in
it? It seems that the PoolDescriptor in the program is just parsed as
an argument from top to down, but it is not modified, so I am a little
confused.

Pool descriptors get allocated before the data in the pool starts to exist.
After that, pointers to those pool descriptors get passed around. If you are
the only poolalloc user, then you can use the pools in any way you want. If
you just want an ID for a pool, it should be safe to not release pools and
just return unique pointers from the pool allocator.

And if you are only interested in the alias analysis client you mentioned (-ds-aa), then you don't need to run the pool allocation transformation at all. That's just another client that gives you a *run-time* representation of the points-to sets.