Patent classifications
G06F9/4493
Efficient pointer swizzling for persistent objects
Techniques for efficiently swizzling pointers in persistent objects are provided. In one embodiment, a computer system can allocate slabs in a persistent heap, where the persistent heap resides on a byte-addressable persistent memory of the system, and where each slab is a continuous memory segment of the persistent heap that is configured to store instances of an object type used by an application. The system can further store associations between the slabs and their respective object types, and information indicating the locations of pointers in each object type. At the time of a system restart or crash recovery, the system can iterate through each slab and determine, based on the stored associations, the slab's object type. The system can then scan though the allocated objects in the slab and, if the system determines that the object includes any pointers based on the stored pointer location information, can swizzle each pointer.
Dynamic multikeys for persistent objects
An object persistence mechanism is disclosed that enables the generation of software objects that have persistent data and a mutable key. A mutable key capability is advantageous in a variety of applications, such as monitoring a set of users and their login status on a plurality of media servers (e.g., an email server, an instant messaging server, a voice mail server, a video server, an audio-conferencing server, etc.). Implementations based on the Enterprise JavaBean specification are disclosed for three illustrative embodiments of the present invention. The illustrative embodiments of the present invention can also be implemented in accordance with object persistence mechanisms other than Enterprise JavaBeans.
METHOD, APPARATUS, AND COMPUTER PROGRAM PRODUCT FOR OBJECT SERIALIZATION
A method, apparatus and computer program product are provided for serializing and de-serializing objects such that data may be transmitted between disparate systems otherwise having incompatible object definitions. The disparate systems may include different versions of the same system or completely different systems. Object graphs may be recursively broken down into primitive components, and the data may be reformatted as maps of primitive data chained together. The data may be transmitted to a disparate recipient system and reassembled into objects recognizable by the disparate recipient system. Various systems can then communicate with each other regardless of underlying data formats.
PROCESS AND SYSTEM FOR TRANSMITTING INFORMATION
A process for transmitting information includes arranging information in a data structure, transmitting the data structure from a first component to a second component with the aid of a transport component and converting the data structure into a first object that implements a predetermined abstract data type. In this context, the data structure includes an instruction for its conversion into the first object.
FACILITATING MULTI-INHERITANCE WITHIN A SINGLE INHERITANCE CONTAINER-BASED ENVIRONMENT
Multi-inheritance within a single-inheritance, container-based data processing environment is provided for facilitating developing, storing, shipping and/or running software applications. More particularly, a facility is provided which includes generating, based on a configuration file with a multi-inheritance instruction, a composited image for a new container from multiple exiting images of the single-inheritance container-based environment. The multiple existing images are identified in the multi-inheritance instruction, and the generating includes creating a composited directory file which, in part, references layers of the multiple existing images and associating a command instruction of the configuration file with the composited file. The composited image is then built in associated with starting the new container based on the composited directory file and the associated command.
PERSISTENT VIRTUAL ADDRESS SPACES
Example implementations relate to persistent virtual address spaces. In one example, persistent virtual address spaces can employ a non-transitory processor readable medium including instructions to receive a whole data structure of a virtual address space (VAS) associated with a process, where the whole data structure includes data and metadata of the VAS, and store the data and the metadata of the VAS in a non-volatile memory to form a persistent VAS (PVAS).
RECURSIVE SERIALIZATION OF A HIERARCHY OF DATA OBJECTS
A data-serialization system initially uses a recursive serialization algorithm to serialize a hierarchy of nested data objects by translating those objects into a serial stream of data. The system determines that a stack-overflow error is likely to occur whenever the number of objects serialized by the system exceeds a threshold value, or whenever the stack has reached an unacceptable level of utilization. When the system determines that a stack-overflow error is likely or if the system detects that a stack-overflow error will definitely occur if another object is serialized, the system either transfers control to a nonrecursive algorithm that does not require a stack data structure or reduces stack utilization by transferring contents of the stack to a variable-size queue-like data structure.
DYNAMIC REDUCTION OF STACK-OVERFLOW ERRORS IN A RECURSIVE DATA-SERIALIZATION ALGORITHM
A data-serialization system initially uses a recursive serialization algorithm to serialize a hierarchy of nested data objects by translating those objects into a serial stream of data. The system determines that a stack-overflow error is likely to occur whenever the number of objects serialized by the system exceeds a threshold value, or whenever the stack has reached an unacceptable level of utilization. When the system determines that a stack-overflow error is likely or if the system detects that a stack-overflow error will definitely occur if another object is serialized, the system either transfers control to a nonrecursive algorithm that does not require a stack data structure or reduces stack utilization by transferring contents of the stack to a variable-size queue-like data structure.
Dynamic reduction of stack-overflow errors in a recursive data-serialization algorithm
A data-serialization system initially uses a recursive serialization algorithm to serialize a hierarchy of nested data objects by translating those objects into a serial stream of data. The system determines that a stack-overflow error is likely to occur whenever the number of objects serialized by the system exceeds a threshold value, or whenever the stack has reached an unacceptable level of utilization. When the system determines that a stack-overflow error is likely or if the system detects that a stack-overflow error will definitely occur if another object is serialized, the system either transfers control to a nonrecursive algorithm that does not require a stack data structure or reduces stack utilization by transferring contents of the stack to a variable-size queue-like data structure.
Persistent variables in programming languages
Techniques for automatically persisting variable data are provided. In one embodiment, a computer system can identify, upon compiling or interpreting source code for an application, a variable in the source code that is declared with a predefined keyword. The predefined keyword can indicate that the variable should be persistent. The computer system can then generate, for each instance in the source code where data is assigned to the variable, runtime code for saving the data in a nonvolatile data store.