Stacy is fundamentally multithreaded. Temporary data for every object is stored in the ThreadLocalSlab, i.e. a slab of memory that's allocated for every thread and serves as a kind of stack.

During the initialization phase, every object can claim space on the slab for its data by incrementing a ref int parameter, taking the previous value as its base offset. Then, during setup, the object selects the area of memory it previously claimed and uses it for temporary data. This is largely automated (read the objects' source for examples).

The advantage of doing it this way is greatly increased cache locality for temporary data.