P
US7240176B2ExpiredUtilityPatentIndex 52

Apparatus and methods for placing a managed heap

Assignee: INTEL CORPPriority: May 1, 2004Filed: May 1, 2004Granted: Jul 3, 2007
Est. expiryMay 1, 2024(expired)· nominal 20-yr term from priority
Inventors:WU GANSHALUEH GUEI-YUAN
Y10S707/99953G06F 12/0223Y10S707/99957
52
PatentIndex Score
0
Cited by
4
References
31
Claims

Abstract

Methods and apparatus are disclosed to intelligently place a managed heap in a memory. An example method disclosed herein identifies a current boundary of a static data region in memory, and sets a lower boundary of the managed heap at an address located a safeguard distance above the identified current boundary of the static data region in memory. Other embodiments may be described and claimed.

Claims

exact text as granted — not AI-modified
1. A method of placing a managed heap in a memory comprising:
 identifying a current boundary of a static data region in the memory; and 
 setting a lower boundary of the managed heap at an address located a safeguard distance above the current boundary of the static data region in the memory. 
 
     
     
       2. A method as defined in  claim 1  wherein the lower boundary of the managed heap is set such that a machine accessible instruction within the managed heap addresses the static data region using an immediate value. 
     
     
       3. A method as defined in  claim 1  wherein the lower boundary of the managed heap is set such that an immediate value of a pointer to an address in the managed heap is constructed in two instructions. 
     
     
       4. A method as defined in  claim 1  wherein the lower boundary of the managed heap is set such that an address within a code segment of the memory is accessed using a direct branch machine accessible instruction in the managed heap. 
     
     
       5. A method as defined in  claim 1  wherein identifying the current upper boundary of the static data region comprises determining the current boundary using binary image introspection. 
     
     
       6. A method as defined in  claim 1  wherein identifying the current upper boundary of the static data region comprises determining the current upper boundary using a system call. 
     
     
       7. A method as defined in  claim 1  wherein the safeguard distance is larger than a maximum growth amount of the static data region. 
     
     
       8. A method as defined in  claim 1  wherein setting a lower boundary of the managed heap comprises summing a memory address of the current boundary of the static data region, and a maximum growth amount of the static data region. 
     
     
       9. A method as defined in  claim 1  wherein setting the lower boundary of the managed heap is performed during a runtime initialization phase. 
     
     
       10. A method as defined in  claim 1  further comprising generating a direct branch from Just-in Time code located in the managed heap to virtual machine code located in a static code segment. 
     
     
       11. A method as defined in  claim 1  further comprising compressing a managed pointer to an address in the managed heap. 
     
     
       12. A method as defined in  claim 11  wherein compressing the managed pointer comprises:
 decomposing the managed pointer into a predetermined base value and an offset value; and 
 storing the offset value. 
 
     
     
       13. A method as defined in  claim 12  wherein storing the offset value comprises storing all but the last two bits of the offset value. 
     
     
       14. A method as defined in  claim 12  wherein the managed pointer points from a first address in the managed heap to a second address in the managed heap. 
     
     
       15. A method as defined in  claim 12  wherein the managed pointer points from an address in the managed heap to an address in the static data region. 
     
     
       16. A method as defined in  claim 12  wherein a predetermined number of bits of the base are combined with a predetermined number of bits of the offset to address the managed heap. 
     
     
       17. A method as define in  claim 1  further comprising constructing a managed pointer to an address in the managed heap. 
     
     
       18. A method as defined in  claim 17  wherein constructing the managed pointer comprises constructing the managed pointer from a predetermined base and an offset value. 
     
     
       19. A method as defined in  claim 18  further comprising adding two bits to the offset value. 
     
     
       20. An apparatus to place a managed heap in a memory comprising:
 a boundary locator to identify a current boundary of a static data region in the memory; and, 
 a heap placement engine to set a lower boundary of the managed heap at an address located a safeguard distance above the current boundary. 
 
     
     
       21. An apparatus as defined in  claim 20  wherein the safeguard distance is larger than a maximum growth amount of the static data region. 
     
     
       22. A compiler system comprising:
 a dynamic random access memory; 
 a boundary locator to identify a current boundary of a static data region in the dynamic random access memory; and, 
 a heap placement engine to set a lower boundary of a managed heap at an address in the dynamic random access memory located a safeguard distance above the current boundary. 
 
     
     
       23. A system as defined in  22  wherein the safeguard distance is larger than a maximum growth amount of the static data region. 
     
     
       24. A machine accessible medium containing instructions which, when executed, cause a machine to:
 identify a current boundary of a static data region in a memory; and 
 set a lower boundary of the managed heap at an address located a safeguard distance above the current boundary of a static data in memory. 
 
     
     
       25. A machine accessible medium as defined in  claim 24  wherein the safeguard distance is larger than a maximum growth amount of the static data region. 
     
     
       26. A method of constructing a pointer to an address in a managed heap comprising:
 loading an offset portion of the address; 
 appending a predetermined value to the offset to generate an intermediate address; and 
 combining the intermediate address with a predetermined base address of a managed heap. 
 
     
     
       27. A method as defined in  claim 26  wherein the predetermined base comprises sixteen bits of the address. 
     
     
       28. A method as defined in  claim 26  wherein combining the intermediate address with the predetermined base address comprises loading the base into a first predetermined portion of a register. 
     
     
       29. A method as defined in  claim 26  wherein loading the offset portion comprises loading the offset portion into a second predetermined portion of the register. 
     
     
       30. A method as defined in  claim 26  wherein appending the predetermined value comprises shifting the offset. 
     
     
       31. A method as defined in  claim 26  wherein the predetermined value is dependent on the memory allocation structure.

Cited by (0)

No later patents cite this yet.

References (0)

No backward citations on record.