Software atomization
First Claim
1. A method of loading atomized computer program code and data on demand, comprising:
- loading an atom from an atom database into a memory, the atom defining code or data in a fine-grained, individually addressable manner, the atom comprising;
an atom identifier;
computer program code or data information;
computer program code or data reference information;
modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime; and
reordering atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences.
3 Assignments
0 Petitions
Accused Products
Abstract
Software atomization provides a method of loading atomized computer program code and data on demand by loading, from an atom database, into a memory, an atom defining code or data in a fine-grained, individually addressable manner. Atoms comprise an atom identifier, computer program code or data information and computer program code or data reference information. The computer program code or data information is modified by transforming the reference information into memory addresses. The present invention provides for the lazy loading of data both implicitly and explicitly. Data is lazily loaded implicitly when it is referenced from code that is lazily loaded. Data is lazily loaded explicitly by encoding a referencing atom identifier such that the referenced data atom is not loaded until actually accessed at runtime.
41 Citations
20 Claims
-
1. A method of loading atomized computer program code and data on demand, comprising:
-
loading an atom from an atom database into a memory, the atom defining code or data in a fine-grained, individually addressable manner, the atom comprising; an atom identifier; computer program code or data information; computer program code or data reference information; modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime; and reordering atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. A method for atomizing computer program code and data, comprising:
-
receiving the computer program code and data in an object code format defining individually addressable code and data; extracting computer program code and data information from the computer program code and data in an object code format; extracting computer program code and data reference information from the computer program code and data in an object code format; modifying the computer program code and data reference information to use atom identifiers; storing the computer program code and data information and computer program code and data reference information in an atom comprising; an atom identifier; computer program code or data information; and computer program code or data reference information; reordering atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences; and modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime.
-
-
15. An apparatus loading atomized computer program code and data on demand, comprising:
-
an atom comprising; an atom identifier; computer program code or data information; and computer program code or data reference information; and an atom management program unit loading an atom from an atom database into a memory, the atom defining code or data in a fine-grained, individually addressable manner, modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime, and reordering the atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences.
-
-
16. An apparatus atomizing computer program code and data, comprising:
-
a receiver receiving the computer program code and data in an object code format defining individually addressable code and data; an extractor extracting computer program code and data information from the computer program code and data in an object code format, and extracting computer program code and data reference information from the computer program code and data in an object code format; a modifier modifying the computer program code and data reference information to use atom identifiers; a storage unit storing the computer program code and data information and computer program code and data reference information in an atom comprising; an atom identifier; computer program code or data information; and computer program code or data reference information; an optimizer for reordering the atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences; and an identifier transformer for modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime.
-
-
17. An apparatus loading atomized computer program code and data on demand, comprising:
-
a means for loading an atom from an atom database into a memory, the atom defining code or data in a fine-grained, individually addressable manner, the atom comprising; an atom identifier; computer program code or data information; computer program code or data reference information; a means for modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime; and a means for reordering the atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences.
-
-
18. An apparatus atomizing computer program code and data, comprising:
-
a means for receiving the computer program code and data in an object code format defining individually addressable code and data; a means for extracting computer program code and data information from the computer program code and data in an object code format; a means for extracting computer program code and data reference information from the computer program code and data in an object code format; a means for modifying the computer program code and data reference information to use atom identifiers; a means for storing the computer program code and data information and computer program code and data reference information in an atom comprising; an atom identifier; computer program code or data information; and computer program code or data reference information; a means for reordering the atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences; and a means for modifying the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime.
-
-
19. A computer program product comprising:
-
a computer readable medium for loading atomized computer program code and data on demand; a set of computer program instructions stored on the computer readable medium, including instructions to; load an atom from an atom database into a memory, the atom defining code or data in a fine-grained, individually addressable manner, the atom comprising; an atom identifier; computer program code or data information; computer program code or data reference information; modify the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and to encode the memory address such that the referenced atom is not loaded until actually accessed at runtime; and reorder the atoms in a disk-based atom database for efficient access based upon analysis of a runtime pattern of previous atom loading experiences.
-
-
20. A computer program product comprising:
-
a computer readable medium for atomizing computer program code and data; a set of computer program instructions stored on the computer readable medium, including instructions to; receive the computer program code and data in an object code format defining individually addressable code and data; extract computer program code and data information from the computer program code and data in an object code format; extract computer program code and data reference information from the computer program code and data in an object code format; modify the computer program code and data reference information to use atom identifiers, wherein each of the atom identifiers identifies a referenced atom; store the computer program code and data information and computer program code and data reference information in an atom comprising; an atom identifier; computer program code or data information; and computer program code or data reference information; reorder the atoms in a disk-based atom database for efficient access based upon analyzing a runtime pattern of previous atom loading experiences; and modify the computer program code or data information by transforming a referencing atom identifier, the referencing atom identifier identifying a referenced atom, into a memory address and encoding the memory address such that the referenced atom is not loaded until actually accessed at runtime.
-
Specification