Patent ID: 6999980

Claim:
A source-instruction executor that, in response to source code that specifies operation of a mutator that includes at least one dynamic allocation in a heap of an object that includes a reference field: A) runs the mutator and a garbage collector that so manages the heap as to organize it into a young generation and an old generation and relies on results of write-barrier execution to keep track of references located in the old generation but not to keep track of those located in the young generation; B) chooses at least one said dynamic allocation to be an allocation of an initially pinned object; C) causes the allocation of the initially pinned object to occur in the young generation; D) assigns a respective unpinning point in the mutator to at least one said allocation of an initially pinned object; E) causes a source-code-specified write operation to a reference field of an initially pinned object to be performed without a write barrier if that write operation occurs before the unpinning point assigned to that initially pinned object's allocation; F) causes a source-code-specified write operation to a reference field of an initially pinned object to be performed with a write barrier if that operation occurs after the unpinning point assigned to that initially pinned object's allocation; and G) causes the garbage collector to promote an initially pinned object from the young generation to the old generation if and only if that initially pinned object meets promotion criteria that include the mutator's having reached the unpinning point assigned to that initially pinned object's allocation.