IP Library Granted Patent US 9,747,088
Granted Patent B2
US 9,747,088 · App. 14/082,005 · Granted Aug 29, 2017

Automatic reference counting

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 9,747,088
App. No.
14/082,005
Granted
Aug 29, 2017
Kind
B2
Abstract

Methods for enabling automatic reference counting are disclosed. A source code is searched for a particular pattern via a compiler associated with a computer system, wherein the source code is written in an existing language and wherein the particular pattern is for a reference associating an object with a portion of memory. The particular pattern is recognized at the computer system. The particular pattern is replaced with an automatic reference counting implementation at the computer system. The source code is executed with the automatic reference counting implementation.

Claims (33)

1. A method for enabling automatic reference counting, said method comprising:

searching a source code for a particular pattern via a compiler associated with a computer system, wherein said source code is written in an existing language and wherein said particular pattern is for a reference associating an object with a portion of memory;

recognizing a location of said particular pattern in said source code at said computer system;

replacing said particular pattern with an automatic reference counting implementation by said compiler at said computer system without requiring a developer to develop structures for said automatic reference counting specific to said existing language, such that said source code executes an object destructor on demand irrespective of whether there are live references to said object, wherein said object destructor marks said object as disposed without freeing said portion of memory associated with said object and without impacting validity of said reference to said object; and

executing said source code with said automatic reference counting implementation, wherein said automatic reference counting collects a reference and removes said reference from being a live reference, and wherein marking of said object as disposed by said object destructor is executed on demand based on said source code irrespective of whether there are live references to said object and without impacting validity of said reference to said object.

2. The method as recited in claim 1 wherein said existing language was developed without automatic reference counting as a function of the existing language.

3. The method as recited in claim 1 wherein said executing occurs at said computer system.

4. The method as recited in claim 1 wherein said source code with said automatic reference counting implementation is sent to second computer system such that said executing occurs at said second computer system.

5. The method as recited in claim 1 wherein said automatic reference counting performs a cleanup of a reference automatically.

6. The method as recited in claim 1 wherein said searching, recognizing, replacing, and executing are performed for more than one type of programming language.

7. The method as recited in claim 1 wherein said replacing said particular pattern with said automatic reference counting implementation is hidden from view.

8. The method as recited in claim 1 wherein said source code is initially a non-automatic reference counting source code.

9. The method as recited in claim 8 wherein said replacing said particular pattern allows said compiler to interpret said non-automatic reference counting source code to a software source code with automatic reference counting enabled.

10. The method as recited in claim 1 wherein said reference is a weak reference.

11. The method as recited in claim 10 , further comprising:

responsive to collecting the portion of memory associated with said objecting, disposing of said weak reference.

12. A non-transitory computer-usable storage medium having instructions embodied therein that when executed cause a computer system to perform a method for enabling automatic reference counting, said method comprising:

searching a source code for a particular pattern via a compiler associated with a computer system, wherein said source code is written in an existing language and wherein said particular pattern is for a reference associating an object with a portion of memory;

recognizing a location of said particular pattern in said source code at said computer system;

replacing said particular pattern with an automatic reference counting implementation by said compiler at said computer system without requiring a developer to develop structures for said automatic reference counting specific to said existing language, such that said source code executes an object destructor on demand irrespective of whether there are live references to said object, wherein said object destructor marks said object as disposed without freeing said portion of memory associated with said object and without impacting validity of said reference to said object; and

executing said source code with said automatic reference counting implementation, wherein said automatic reference counting collects a reference and removes said reference from being a live reference, and wherein marking of said object as disposed by said object destructor is executed on demand based on said source code irrespective of whether there are live references to said object and without impacting validity of said reference to said object.

13. The non-transitory computer-usable storage medium as recited in claim 12 wherein said source code is initially a non-automatic reference counting source code.

14. The non-transitory computer-usable storage medium as recited in claim 12 wherein said existing language was developed without automatic reference counting as a function of the existing language.

15. A method for enabling automatic reference counting, said method comprising:

converting a source code, by a compiler of a computer system, written in an existing language such that automatic reference counting is enabled from said source code without requiring a developer to develop structures for said automatic reference counting specific to said existing language, such that said source code executes an object destructor on demand irrespective of whether there are live references to an object, wherein said object destructor marks said object as disposed without freeing a portion of memory associated with said object and without impacting validity of a reference to said object, said converting a source code comprising:

replacing a particular pattern of said source code with an automatic reference counting implementation by said compiler at said computer system;

executing said source code with said automatic reference counting implementation; and

running an object destructor as part of said source code with said automatic reference counting on demand during said executing, wherein said object destructor is for use in an explicit disposal process of a reference associated with said source code, wherein said object destructor collects a reference and removes said reference from being a live reference, and wherein marking of said object as disposed by said object destructor is executed on demand based on said source code irrespective of whether there are live references to said object and without impacting validity of said reference to said object.

16. The method as recited in claim 15 wherein said source code is initially a non-automatic reference counting source code.

17. The method as recited in claim 15 wherein said existing language was developed without automatic reference counting as a function of the existing language.

18. The method as recited in claim 15 wherein said explicit disposal process only needs to be run once for said reference associated with said source code.

19. The method as recited in claim 15 wherein said converting said source code are performed for more than one type of programing language.

20. The method as recited in claim 15 wherein said converting said source code is hidden from view.

Assignments (3)
SECOND LIEN SECURITY AGREEMENT Recorded Oct 14, 2015
From: IDERA, INC.; CODEGEAR LLC; EMBARCADERO TECHNOLOGIES, INC.; COPPEREGG CORPORATION; PRECISE SOFTWARE SOLUTIONS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 036863/0137 →
FIRST LIEN SECURITY AGREEMENT Recorded Oct 13, 2015
From: IDERA, INC.; CODEGEAR LLC; EMBARCADERO TECHNOLOGIES, INC.; COPPEREGG CORPORATION; PRECISE SOFTWARE SOLUTIONS, INC.
To: JEFFERIES FINANCE LLC, AS COLLATERAL AGENT
Reel/Frame 036842/0410 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2013
From: BAUER, ALLEN
To: EMBARCADERO TECHNOLOGIES, INC.
Reel/Frame 031687/0001 →