IP Library Granted Patent US 8,656,378
Granted Patent B2
US 8,656,378 · App. 13/671,816 · Granted Feb 18, 2014

Memoization configuration file consumed at compile time

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,656,378
App. No.
13/671,816
Granted
Feb 18, 2014
Kind
B2
Abstract

Memoization may be deployed using a configuration file or database that identifies functions to memorize, and in some cases, includes input and result values for those functions. At compile time, functions defined in the configuration file may be captured and memoized. During compilation or other pre-execution analysis, the executable code may be modified or otherwise decorated to include memoization code. The memoization code may store results from a function during the first execution, then merely look up the results when the function may be called again. The memoized value may be stored in the configuration file or in another data store. In some embodiments, the modified executable code may operate in conjunction with an execution environment, where the execution environment may optionally perform the memoization.

Claims (46)

1. A method performed by a computer processor, said method comprising:

receiving source code;

receiving a configuration database;

compiling said source code into compiled code;

during said compiling, detecting a call for a first function;

looking up said first function in said configuration database;

when said first function is present in said configuration database, decorating said compiled code with a modifier corresponding to a record in said configuration database, said modifier causing memoization for said first function in a first state; and

storing said decorated compiled code.

2. The method of claim 1 , said modifier comprising executable code.

3. The method of claim 2 , said executable code comprising instructions that:

detects when a result is stored for said first function and returns said result.

4. The method of claim 2 , said executable code comprising instructions that:

calls a memoization library.

5. The method of claim 2 , said executable code comprising instructions that:

causes input values to said first function to be evaluated prior to memoization.

6. The method of claim 5 , said input values being said first state for which said first function is memoized.

7. The method of claim 2 , said executable code comprising instructions that:

causes a lookup in said configuration database during execution.

8. The method of claim 1 , said modifier being consumable by an execution environment.

9. The method of claim 1 , said source code being intermediate code.

10. The method of claim 1 , said compiled code being intermediate code.

11. The method of claim 1 , said source code being decompiled code.

12. The method of claim 1 , said modifier not causing memoization for said first function in a second state.

13. The method of claim 1 , said first state comprising a first set of input parameters for said first function.

14. The method of claim 13 , said first state further comprising a first set of external parameters, said external parameters being parameters not included in said first set of input parameters.

15. The method of claim 14 , said first set of external parameters comprising a calling function identifier, said calling function identifier being a function that calls said first function.

16. A system comprising:

a processor; and

a pre-execution analyzer executing on said processor, said pre-execution analyzer that:

receives source code;

receives a configuration database;

compiles said source code into compiled code;

during said compiling, detects a call for a first function;

looks up said first function in said configuration database;

when said first function is present in said configuration database, decorates said compiled code with a modifier corresponding to a record in said configuration database, said modifier causing memoization for said first function in a first state; and

stores said decorated compiled code.

17. The system of claim 16 , further comprising:

a configuration database manager that:

receives said configuration database.

18. The system of claim 17 , said configuration database manager that further:

receives an update to said configuration database; and

updates said configuration database.

19. The system of claim 18 , said configuration database manager that further:

communicates with a remote server; and

receives said update from said remote server.

20. The system of claim 16 , said pre-execution analyzer being a compiler.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: CONCURIX CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036139/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 13, 2012
From: GOUNARES, ALEXANDER G.; LI, YING; GARRETT, CHARLES D.; NOAKES, MICHAEL D.
To: CONCURIX CORPORATION
Reel/Frame 029463/0728 →