In order to implement fine-grained address translation in Texas, we must swizzle individual pointers, instead of entire pages at a time, thereby reducing the consumption of virtual address space for sparsely-accessed data structures with high fanout. By using smart pointers for this purpose, we allow the programmer to easily choose data structures that are swizzled on a per-pointer basis, without requiring any inherent changes in the implementation of the basic swizzling mechanism.
Note that although the pointers are swizzled individually, the granularity of data fetching is still a page, not individual objects, to avoid excessive I/O costs. Below we describe at least two possible ways to handle fine-grained address translation, and discuss why we choose one over the other.