Legal claims defining the scope of protection, as filed with the USPTO.
1. A computer-implemented method for using unused bits in a memory pointer, comprising: when loading a program to be executed, determining a set of address bits in the memory pointer that are not needed for addressing during program operation by using a program loader to: determine an amount of memory available to the program; predict an amount of virtual address space needed by the program; determine how many bits are available in the memory pointer based on the determined available memory and the predicted virtual address space set up an address space and runtime environment based on the bits available in the memory pointer; storing data associated with the memory pointer in the set of address bits, wherein the stored data comprises data associated with an object that the memory pointer points to; and masking the set of address bits when using the memory pointer to access a memory address; wherein accessing the stored data from the set of address bits facilitates reducing the number of memory accesses needed to access object data.
2. The computer-implemented method of claim 1 , wherein the stored data comprises object data associated with a garbage collection operation; and wherein reducing the number of memory accesses for objects during garbage collection facilitates speeding up the garbage collection operation.
3. The computer-implemented method of claim 1 , wherein the method further comprises using a processor register to track the number of bits in the set of address bits; and wherein masking the set of address bits involves checking the processor register to determine the address bits to be masked for the memory pointer.
4. The computer-implemented method of claim 1 , wherein the set of address bits is masked before the memory pointer is received by a processor TLB for translation to a physical memory address.
5. The computer-implemented method of claim 1 , wherein determining the set of address bits that are not needed for addressing involves one or more of the following: specifying the set of address bits during a compilation operation; receiving a specification for the set of address bits from a program binary being loaded; and dynamically determining the set of address bits based on at least one of a processor identifier, a physical memory size, and predicted application addressing needs.
6. The computer-implemented method of claim 1 , wherein storing data associated with the memory pointer in the set of address bits further involves one or more of the following: using a runtime environment to store and access data in the set of address bits; using a compiler to generate instructions that store and access data in the set of address bits; using a heap manager to store and access data in the set of address bits; and using a program load mechanism in an operating system to facilitate storing and accessing data in the set of address bits.
7. The computer-implemented method of claim 1 , wherein the stored data comprises origination data associated with the memory pointer; and wherein storing origination data for the memory pointer facilitates determining the cause of bugs associated with the memory pointer.
8. The computer-implemented method of claim 1 , wherein the stored data comprises memory version information associated with the memory pointer; and wherein storing memory version information for the memory pointer facilitates ensuring that a memory region associated with the memory pointer is valid.
9. A non-transitory computer-readable storage medium storing instructions that when executed by a computer cause the computer to perform a method for using unused bits in a memory pointer, the method comprising: when loading a program to be executed, determining a set of address bits in the memory pointer that are not needed for addressing during program operation by using a program loader to: determine an amount of memory available to the program; predict an amount of virtual address space needed by the program; set up an address space and runtime environment for the program based on the determined available memory and the predicted virtual address space; storing data associated with the memory pointer in the set of address bits, wherein the stored data comprises data associated with an object that the memory pointer points to; and masking the set of address bits when using the memory pointer to access a memory address; wherein accessing the stored data from the set of address bits facilitates reducing the number of memory accesses needed to access object data.
10. The non-transitory computer-readable storage medium of claim 9 , wherein the stored data comprises object data associated with a garbage collection operation; and wherein reducing the number of memory accesses for objects during garbage collection facilitates speeding up the garbage collection operation.
11. The non-transitory computer-readable storage medium of claim 9 , wherein the method further comprises using a processor register to track the number of bits in the set of address bits; and wherein masking the set of address bits involves checking the processor register to determine the address bits to be masked for the memory pointer.
12. The non-transitory computer-readable storage medium of claim 9 , wherein the set of address bits is masked before the memory pointer is received by a processor TLB for translation to a physical memory address.
13. The non-transitory computer-readable storage medium of claim 9 , wherein determining the set of address bits that are not needed for addressing involves one or more of the following: specifying the set of address bits during a compilation operation; receiving a specification for the set of address bits from a program binary being loaded; and dynamically determining the set of address bits based on at least one of a processor identifier, a physical memory size, and predicted application addressing needs.
14. The non-transitory computer-readable storage medium of claim 9 , wherein storing data associated with the memory pointer in the set of address bits further involves one or more of the following: using a runtime environment to store and access data in the set of address bits; using a compiler to generate instructions that store and access data in the set of address bits; using a heap manager to store and access data in the set of address bits; and using a program load mechanism in an operating system to facilitate storing and accessing data in the set of address bits.
15. The non-transitory computer-readable storage medium of claim 9 , wherein the stored data comprises origination data associated with the memory pointer; and wherein storing origination data for the memory pointer facilitates determining the cause of bugs associated with the memory pointer.
16. The non-transitory computer-readable storage medium of claim 9 , wherein the stored data comprises memory version information associated with the memory pointer; and wherein storing memory version information for the memory pointer facilitates ensuring that a memory region associated with the memory pointer is valid.
17. A computing device configured to use unused bits in a memory pointer, comprising: a processor; a memory; a determining mechanism configured to, when loading a program to be executed, determine a set of address bits in the memory pointer that are not needed for addressing during program operation by using a program loader to: determine an amount of memory available to the program; predict an amount of virtual address space needed by the program; set up an address space and runtime environment based on the determined available memory and the predicted virtual address space; a storage mechanism configured to store data associated with the memory pointer in the set of address bits, wherein the stored data comprises data associated with an object that the memory pointer points to; and a masking mechanism configured to mask the set of address bits when using the memory pointer to access an address in the memory; wherein accessing the stored data from the set of address bits facilitates reducing the number of memory accesses needed to access object data.
18. The computing device of claim 17 , wherein the computing device further comprises a register which tracks the number of bits in the set of address bits; and wherein masking the set of address bits involves checking the register to determine the address bits to be masked for the memory pointer.
19. The computing device of claim 17 , wherein the set of address bits is masked before the memory pointer is received by a processor TLB for translation to a physical memory address.
20. The computing device of claim 17 , wherein determining the set of address bits that are not needed for addressing involves one or more of the following: specifying the set of address bits during a compilation operation; receiving a specification for the set of address bits from a program binary being loaded; and dynamically determining the set of address bits based on at least one of a characteristic of the processor, a physical memory size available to the processor, and predicted application addressing needs.
Unknown
May 20, 2014
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.