IP Library › Patent Application 12432779
Patent Application
App. No. 12/432,779

Subordinate Multiobjects

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
12/432,779
Abstract

Attached and detached subordinate multiobjects provide a means for managing references to within multiobjects in multiobject-based garbage collection (multiobjects are basically linearized trees of objects that are treated as a single unit in various garbage collection operations). Attached subordinate multiobjects provide an efficient means for dealing with transient references from registers, local variables and short-lived data structures, and detached subordinate multiobjects are created when the link connecting an attached subordinate multiobject to its containing multiobject is severed by a write to the data structure.

Claims (64)

1 . A method of managing memory in a data processing device comprising a reference creator, the method comprising:

identifying at least one object with a new reference, said object being within an existing multiobject but not the root of that multiobject; and

creating at least one attached subordinate multiobject whose root object is said object and whose containing multiobject is said existing multiobject.

2 . The method of claim 1 , further comprising:

representing said attached subordinate using a data structure, the data structure comprising at least information from which the address of said object can be determined.

3 . The method of claim 1 , further comprising:

when creating an attached subordinate multiobject:

determining the address range of the subtree rooted at said object; and

reparenting at least one subordinate multiobject within the address range.

4 . The method of claim 1 , further comprising:

when an attached subordinate multiobject is created, marking that its address range has not yet been computed;

when the address range of the subordinate multiobject is first needed:

determining the address range of the subtree rooted at said object; and

reparenting at least one subordinate multiobject within the address range;

thereby avoiding determining of the address range of the multiobject and reparenting the at least one subordinate multiobject if the newly created multiobject is freed before they are needed.

5 . The method of claim 1 , further comprising:

determining the address range of the subtree rooted at said object; and

moving exits in the address range to the created attached subordinate multiobject.

6 . The method of claim 1 , further comprising:

at the end of a transitive closure computation, freeing at least one attached subordinate multiobject that is no longer reachable.

7 . The method of claim 1 , further comprising:

freeing at least one attached subordinate multiobject when its list of exits referencing it becomes empty.

8 . The method of claim 1 , further comprising:

at the end of an evacuation pause, freeing at least one attached subordinate multiobject that is only referenced from transient exits in addition to the implied reference from its containing multiobject.

9 . The method of claim 1 , further comprising:

freeing a subordinate multiobject when its reference count becomes zero.

10 . The method of claim 1 , further comprising:

when the containing multiobject of a first subordinate multiobject is freed, if the containing multiobject is a top-level multiobject, promoting the first subordinate multiobject to a top-level multiobject.

11 . The method of claim 1 , further comprising:

when the containing multiobject of a first subordinate multiobject is freed, if the containing multiobject is a detached subordinate multiobject and the first subordinate multiobject is an attached subordinate multiobject, promoting the first subordinate multiobject to be a detached subordinate multiobject.

12 . The method of claim 1 , further comprising:

when a write occurs to a pointer cell that contains an internal pointer:

determining the address range of the object pointed to by the old value of that cell; and

promoting at least one attached subordinate multiobject within such address range to be a detached subordinate multiobject.

13 . The method of claim 1 , further comprising:

if a transitive closure computation is running when a multiobject is promoted, causing the multiobject computation to visit the promoted multiobject.

14 . The method of claim 1 , further comprising:

computing a transitive closure of the multiobject graph; and

when a multiobject is deemed reachable during the transitive closure computation, causing any attached subordinate multiobject directly contained in it to be deemed as reachable.

15 . The method of claim 1 , further comprising:

when moving a containing multiobject, moving at least one subordinate multiobject along with the containing multiobject.

16 . The method of claim 15 , further comprising:

updating pointers referring to said at least one subordinate multiobject to point to the new location of said at least one subordinate multiobject.

17 . The method of claim 1 , further comprising:

buffering writes during mutator execution using a write barrier buffer such that for each written address the old value of the written cell is saved;

when processing write barrier buffers, for at least one written cell:

creating an attached subordinate multiobject for the new value of the written cell;

determining the address range of the subtree rooted at the object pointed to by the old value of the written cell; and

promoting at least one attached subordinate multiobject within the address range.

18 . The method of claim 1 , further characterized by each subordinate multiobject being properly nested within its containing multiobject.

19 . A data processing device comprising:

at least one nursery memory area comprising objects that have not yet been grouped into multiobjects;

at least one multiobject space comprising one or more top-level multiobjects, at least one of which has been constructed from objects in the nursery memory area;

a reference creator; and

at least one attached subordinate multiobject whose data is stored within the address range of one of the top-level multiobjects, said multiobject having been created by the reference creator.

20 . The data processing device of claim 19 , further comprising at least one detached subordinate multiobject contained within the address range of one of the top-level multiobjects.

21 . The data processing device of claim 19 , further comprising a data barrier buffer for recording writes that occur to within multiobjects, the buffer capable of storing the address and the old value of at least one written cell.

22 . The data processing device of claim 19 , further comprising at least one subtree address range determinator.

23 . The data processing device of claim 19 , further comprising at least one reference creator.

24 . The data processing device of claim 19 , further comprising at least one promoter.

25 . A computer program product operable to cause a data processing device to:

comprise a reference creator;

identify at least one object with a new reference, said object being within an existing multiobject but not the root of that multiobject; and

create at least one attached subordinate multiobject whose root object is said object and whose containing multiobject is the multiobject that contains said object.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2012
From: TATU YLONEN OY
To: CLAUSAL COMPUTING OY
Reel/Frame 028391/0707 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2012
From: YLONEN, TATU J.
To: TATU YLONEN OY
Reel/Frame 028300/0593 →