Supporting Persistent C++ Objects in a Distributed Storage System

Anand Ranganathan, Yury Izrailevsky, Sai Susarla, John Carter, and Gary Lindstrom

March 1999

The Flux Research Group
Department of Computer Science
University of Utah
50 S. Central Campus Drive Rm. 3190
Salt Lake City, Utah 84112-9205


We have designed and implemented a C++ object layer for Khazana, a distributed persistent storage system that exports a flat shared address space as its basic abstraction. The C++ layer described herein lets programmers use familiar C++ idioms to allocate, manipulate, and deallocate persistent shared data structures. It handles the tedious details involved in accessing this shared data, replicating it, maintaining consistency, converting data representations between persistent and in-memory representations, associating type information including methods with objects, etc. To support the C++ object layer on top of Khazana's flat storage abstraction, we have developed a language-specific preprocessor that generates support code to manage the user-specified persistent C++ structures. We describe the design of the C++ object layer and the compiler and runtime mechanisms needed to support it.

The full paper that appeared at the ACM SIGPLAN Workshop on Compiler Support for System Software (WCSSS'99), May 1, 1999, Atlanta, GA, is also available.