IP Library › Granted Patent US 8,280,866
Granted Patent B2
US 8,280,866 · App. 12/774,136 · Granted Oct 2, 2012

Monitoring writes using thread-local write barrier buffers and soft synchronization

Assignee: Clausal Computing OY
View Patent ↗
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 8,280,866
App. No.
12/774,136
Granted
Oct 2, 2012
Kind
B2
Abstract

During garbage collection, writes to objects being copied (relocated) are monitored (tracked) using a write barrier that uses a thread-local write barrier buffer. In the preferred embodiment, soft synchronization is used for reading the thread-local write barrier buffers. In response to detecting a write to an object, the object may be re-copied, the copying may be made to fail, the write may be propagated to another copy of the object, or, e.g., another node in a distributed system may be notified of the write.

Claims (68)

1. A method of monitoring writes to a set of objects by one or more mutators, comprising:

recording, by a write barrier executed by a mutator, information about at least one write by the mutator in a thread-local write barrier buffer associated with the mutator;

obtaining the recorded information about writes from the thread-local write barrier buffers associated with one or more mutators;

processing the recorded information about writes; and

in response to the recorded information about one of the writes indicating that at least a part of an object being copied has been written into, causing at least the written part of the object to be re-copied to another copy of the object.

2. The method of claim 1 , wherein obtaining recorded writes uses soft synchronization.

3. The method of claim 2 , wherein:

obtaining the recorded writes comprises saving one or more thread-local write barrier buffers associated with mutators to a data structure and causing each mutator thread to start using an empty thread-local write barrier buffer; and

processing the recorded writes comprises iterating over writes in the saved write barrier buffers.

4. The method of claim 3 , wherein the processing of the recorded writes is performed by a background thread.

5. The method of claim 2 , wherein obtaining the recorded writes comprises, for at least one mutator thread, processing each write using the thread of the mutator in whose write barrier buffer it was stored.

6. The method of claim 1 , wherein the information recorded for a write includes at least one piece of information selected from the group consisting of:

the written memory address;

the written object;

an offset of the written field in the written object;

an identifier for the written field in the written object; and

the size of the write.

7. The method of claim 1 , wherein the processing of a recorded write comprises at least one operation selected from the group consisting of:

causing the written object to be re-copied;

causing the written field of the written object to be re-copied;

causing the copying of the written object to fail;

causing the new value of the written field to be propagated to another copy of the written object; and

causing the new value of the written field to be propagated to at least one node other than the node processing the write in a distributed system.

8. A computing system comprising:

at least one mutator associated with a write barrier buffer;

at least one write barrier connected to the mutator and comprising a write recorder configured to record information about at least one write by the mutator in the write barrier buffer;

a write obtainer connected to at least one GC point handler connected to the mutator; and

at least one write processor connected to the write obtainer, configured to process the recorded information about the at least one write and in response to the information indicating that at least a part of an object being copied has been written into, causing at least the written part of the object to be re-copied to another copy of the object.

9. The computing system of claim 8 , wherein the write obtainer is connected to the at least one GC point handler using a soft synchronization mechanism.

10. The computing system of claim 8 , wherein the write processor comprises at least one write handling component selected from the group consisting of:

an object re-copier;

a field re-copier;

a copy aborter;

a write propagator; and

a distributed write propagator.

11. A tangible computer-readable medium comprising computer readable program code means embodied therein, operable to cause a computer to:

record, using a write barrier executed by a mutator, information about at least one write by the mutator in a thread-local write barrier buffer associated with the mutator;

obtain the recorded information about writes from the thread-local write barrier buffers associated with mutators;

process the recorded information about writes; and

in response to the recorded information about one of the writes indicating that at least a part of an object being copied has been written into, cause at least the written part of the object to be re-copied to another copy of the object.

12. The tangible computer-readable medium of claim 11 , operable to cause the recorded writes to be obtained using soft synchronization.

13. The tangible computer-readable medium of claim 11 , wherein the information caused to be recorded for a write includes at least one piece of information selected from the group consisting of:

the written memory address;

the written object;

an offset of the written field in the written object;

an identifier for the written field in the written object; and

the size of the write.

14. The tangible computer-readable medium of claim 11 , wherein the processing of a recorded write comprises at least one operation selected from the group consisting of:

causing the written object to be re-copied;

causing the written field of the written object to be re-copied;

causing the copying of the written object to fail;

causing the new value of the written field to be propagated to another copy of the written object; and

causing the new value of the written field to be propagated to at least one node other than the node processing the write in a distributed system.

15. A method of monitoring writes to a set of objects by one or more mutators, comprising:

recording, by a write barrier executed by a mutator, information about at least one write by the mutator in a thread-local write barrier buffer associated with the mutator;

obtaining the recorded information about writes from the thread-local write barrier buffers associated with one or more mutators;

processing the recorded information about writes; and

in response to the recorded information about one of the writes indicating that at least a part of an object being copied has been written into, causing at least the written part of the object to be propagated to another node than the one processing the write in a distributed system.

16. A computing system comprising:

at least one mutator associated with a write barrier buffer;

at least one write barrier connected to the mutator and comprising a write recorder configured to record information about at least one write by the mutator in the write barrier buffer;

a write obtainer connected to at least one GC point handler connected to the mutator; and

at least one write processor connected to the write obtainer, configured to process the recorded information about the at least one write and in response to the information indicating that at least a part of an object being copied has been written into, causing at least the written part of the object to be propagated to another node than the one processing the write in a distributed system.

17. A tangible computer-readable medium comprising computer readable program code means embodied therein, operable to cause a computer to:

record, using a write barrier executed by a mutator, information about at least one write by the mutator in a thread-local write barrier buffer associated with the mutator;

obtain the recorded information about writes from the thread-local write barrier buffers associated with mutators;

process the recorded information about writes; and

in response to the recorded information about one of the writes indicating that at least a part of an object being copied has been written into, cause at least the written part of the object to be propagated to another node than the one processing the write in a distributed system.

Assignments (3)
NUNC PRO TUNC ASSIGNMENT Recorded Jan 31, 2023
From: CLAUSAL COMPUTING OY
To: POSTQ IPR OY
Reel/Frame 062540/0566 →
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.; MONONEN, TERO
To: TATU YLONEN OY
Reel/Frame 028300/0711 →
Continuity (3)
Continuation In Part 12758068 · Apr 12, 2010
Provisional Application 61327374 · Apr 23, 2010
Related Publication 20110252075A1 · Oct 13, 2011