Type descriptor management for frozen objects
First Claim
1. A method for performing one or more type operations using a plurality of type descriptors, the plurality of type descriptors including a canonical type descriptor that conforms to a set of canonicalization rules and an auxiliary type descriptor, the canonical type descriptor and auxiliary type descriptor being distinct and both being associated with a frozen object, the frozen object having a layout that is completed at compile time and allocated at compile time and thereby existing as an object in a compiled executable first module, the first module including both the frozen object and the auxiliary type descriptor, the method being performed upon one or more computer processors, the method comprising:
- an indirection component through which the auxiliary type descriptor is associated with the canonical type descriptor, wherein the indirection component is a component that may be written to at run-time to thereby cause the indirection component to point to the canonicalized type descriptor without causing the indirection component or a portion thereof to become private;
for a first set of one of more operations,an act of determining that the auxiliary type descriptor within the first module will be sufficient to perform the operation, andan act of using the auxiliary type descriptor, and not the canonical type descriptor, to perform the operation; and
for a second set of one or more operations,an act of determining that the auxiliary type descriptor will not be sufficient to perform the operation,an act of using the auxiliary type descriptor to access the canonical type descriptor, wherein the canonical type descriptor is included in a second module, andan act of using the canonical type descriptor within the second module to perform the operation.
2 Assignments
0 Petitions
Accused Products
Abstract
The efficient use of type descriptors with frozen objects. A frozen object might actually include several type descriptors, a primary type descriptor that is canonical according to a set of canonicalization rules, and an auxiliary type descriptor that is not identical to the primary type descriptor. The auxiliary type descriptor may be used to access the canonical type descriptor. When performing an operation, if the auxiliary type descriptor can be used to perform the operation, then that auxiliary type descriptor may be used. If the canonical type descriptor is to be used to perform the operation, the auxiliary type descriptor is used to gain access to the canonical primary type descriptor. The primary type descriptor is then used to perform the operation.
-
Citations
17 Claims
-
1. A method for performing one or more type operations using a plurality of type descriptors, the plurality of type descriptors including a canonical type descriptor that conforms to a set of canonicalization rules and an auxiliary type descriptor, the canonical type descriptor and auxiliary type descriptor being distinct and both being associated with a frozen object, the frozen object having a layout that is completed at compile time and allocated at compile time and thereby existing as an object in a compiled executable first module, the first module including both the frozen object and the auxiliary type descriptor, the method being performed upon one or more computer processors, the method comprising:
-
an indirection component through which the auxiliary type descriptor is associated with the canonical type descriptor, wherein the indirection component is a component that may be written to at run-time to thereby cause the indirection component to point to the canonicalized type descriptor without causing the indirection component or a portion thereof to become private; for a first set of one of more operations, an act of determining that the auxiliary type descriptor within the first module will be sufficient to perform the operation, and an act of using the auxiliary type descriptor, and not the canonical type descriptor, to perform the operation; and for a second set of one or more operations, an act of determining that the auxiliary type descriptor will not be sufficient to perform the operation, an act of using the auxiliary type descriptor to access the canonical type descriptor, wherein the canonical type descriptor is included in a second module, and an act of using the canonical type descriptor within the second module to perform the operation. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer program product comprising one or more computer-readable physical storage media having thereon an executable module, the executable module comprising:
-
a frozen object that is an instance of a type canonically described by a canonical type descriptor that conforms to a set of canonicalization rules, the frozen object having a layout that is completed at compile time and being allocated at compile time and thereby existing as an object in the executable module; an auxiliary type descriptor that is distinct from and not identical to the canonical type descriptor, but that also serves as a type descriptor for the frozen object for at least some operations associated with the frozen object that use type descriptors for the type; wherein the frozen object is associated with the auxiliary type descriptor within the executable module, wherein the frozen object is associated with the canonical type descriptor by an indirection component through the auxiliary type descriptor, wherein the canonical type descriptor is in a module distinct from and external to the executable module, and wherein the indirection component is a component that may be written to at run-time to thereby cause the indirection component to point to the canonicalized type descriptor without causing the indirection component or a portion thereof to become private. - View Dependent Claims (11, 12, 13, 14, 15)
-
-
16. A computer program product comprising one or more computer-readable physical storage media having thereon the following:
-
a defining module that includes a first compiled image that contains a primary type descriptor corresponding to a type; a referring module that includes a second compiled image that contains a frozen object, an auxiliary type descriptor, and an association between the frozen object and the auxiliary type descriptor, the frozen object having a layout that is completed at compile time and is allocated at compile time, wherein the defining module and the referring module are separate and distinct modules; an indirection component through which the auxiliary type descriptor is associated with the primary type descriptor, wherein the indirection component is a component that may be written to at run-time to thereby cause the indirection component to point to the primary type descriptor without causing the indirection component or a portion thereof to become private; and an operations management component that is configured to determine whether the auxiliary type descriptor is sufficient to perform an operation or whether the primary type descriptor is needed to perform the operation, and when it is determined that the primary type descriptor is needed, using the auxiliary type descriptor in the referring module to locate and access the primary type descriptor within the defining module through the indirection component. - View Dependent Claims (17)
-
Specification