IP Library Granted Patent US 8,984,492
Granted Patent B2
US 8,984,492 · App. 13/797,789 · Granted Mar 17, 2015

Incremental compilation of a script code in a distributed environment

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,984,492
App. No.
13/797,789
Granted
Mar 17, 2015
Kind
B2
Abstract

Disclosed here are methods, systems, paradigms and structures for incrementally compiling scripts at runtime to generate executable code. In a first phase, an executable block for a basic block of the script is generated for a set of types of variables of the basic block. In a second phase, a set of executable blocks whose profiling information, such as frequency of (a) execution, (b) transition between executable blocks, or (c) execution of a path, satisfies an optimization criterion is identified, and an executable control region is generated. In a third phase, profiling information from a number of systems in a distributed environment is aggregated, and an executable control region corresponding to the aggregated profile is generated. The executable code generated in each of the phases is more optimal than the code generated in a previous phase, and is used for execution until replaced by the code of a subsequent phase.

Claims (46)

1. A method comprising:

obtaining, at a master computer in a computer system having a plurality of computers, profiling information of a script from each of the computers on which the script is executing, the profiling information generated based on a plurality of executable blocks of the script;

aggregating, at the master computer and based on profile aggregation criteria, the profiling information of the script obtained from each of the computers to form an aggregated profile of the script;

identifying, at the master computer, the executable blocks of the script corresponding to the aggregated profile;

generating, at the master computer, an executable control region for a region of the script corresponding to the identified executable blocks, the executable control region including instructions for executing the region of the script; and

sending, by the master computer, the executable control region to each of the computers.

2. The method of claim 1 further comprising:

storing, at each of the computers, the executable control region for execution in response to subsequent requests to execute the script.

3. The method of claim 1 further comprising:

executing, at each of the computers, the script using the generated executable control region.

4. The method of claim 1 , wherein each of the executable blocks of the script corresponds to one of a plurality of basic blocks of the script, and wherein the executable blocks of the script are generated by

identifying, at each of the computers, a basic block of the basic blocks from the script for execution,

determining a set of types corresponding to variables used in the basic block for the execution of the script, and

generating an executable block of the executable blocks corresponding to the identified basic block, the executable block including instructions verifying whether an input set of values provided for executing the executable basic block conform to the set of types.

5. The method of claim 4 , wherein generating the executable control region includes

combining, at the master computer, basic blocks of the script corresponding to the identified executable blocks to form the region of the script.

6. The method of claim 1 , wherein obtaining the profiling information includes

identifying, at each of the computers, at least one of (a) executable blocks whose frequency of execution exceeds a first predefined threshold, (b) executable blocks transition between which exceeds a second predefined threshold, or (c) executable blocks along a path whose frequency of execution exceeds a third predefined threshold.

7. The method of claim 1 , wherein the profile aggregation criteria includes at least one of (a) aggregating profiling information from computers having a particular type of processor, (b) aggregating profiling information from computers executing a particular operating system, (c) aggregating profiling information from computers in a particular geography, (d) aggregating profiling information from each of the computers based on a frequency of execution of executable blocks, (e) aggregating profiling information from each of the computers based on a frequency of transitions between executable blocks, (f) aggregating profiling information obtained from each of the computers based on a frequency of execution of a path, or (g) aggregating profiling information obtained from each of the computers based on a combination of any of criteria (a)-(f).

8. The method of claim 1 , wherein generating the profiling information at each of the computers includes generating the profiling information intermittently.

9. The method of claim 1 , wherein the profiling information is aggregated in response to a trigger.

10. The method of claim 9 , wherein the trigger includes a predefined time interval.

11. A method comprising:

obtaining, at a master computer in a computer system having a plurality of computers, profiling information of a script from each of the computers on which the script is executing, the profiling information generated based on a plurality of executable blocks of the script;

aggregating, at the master computer and based on a profile aggregation criteria, the profiling information of the script obtained from each of the computers to form an aggregated profile of the script;

sending, by the master computer, the aggregated profile of the script to each of the computers;

identifying, at each of the computers, the executable blocks of the script corresponding to the aggregated profile; and

generating, at each of the computers, an executable control region for a region of the script corresponding to the identified executable blocks, the executable control region including instructions for executing the region of the script.

12. The method of claim 10 further comprising:

storing, at each of the computers, the executable control region for execution in response to subsequent requests to execute the script.

13. The method of claim 10 further comprising:

executing, at each of the computers, the script using the generated executable control region.

14. The method of claim 10 , wherein each of the executable blocks of the script corresponds to one of a plurality of basic blocks of the script.

15. The method of claim 10 , wherein generating the executable control region includes

combining, at each of the computers, basic blocks of the script corresponding to the identified executable blocks to form the region of the script.

16. The method of claim 10 , wherein each of the executable blocks includes instructions verifying whether an input set of values provided for executing the basic block to which the executable block corresponds conform to the set of types of variables used in the basic block.

17. The method of claim 10 , wherein the profile aggregation criteria includes at least one of (a) aggregating profiling information from computers having a particular type of processor, (b) aggregating profiling information from computers executing a particular operating system, (c) aggregating profiling information from computers in a particular geography, (d) aggregating profiling information from each of the computers based on a frequency of execution of executable blocks, (e) aggregating profiling information from each of the computers based on a frequency of transitions between executable blocks, (f) aggregating profiling information obtained from each of the computers based on a frequency of execution of a path, or (g) aggregating profiling information obtained from each of the computers based on a combination of any of criteria (a)-(f).

18. An article of manufacture comprising:

a non-transitory computer readable medium having instructions, which, when executed by a processor, causes the processor to execute a method including

obtaining, at a master computer in a computer system having a plurality of computers, profiling information of a script from each of the computers on which the script is executing, the profiling information generated based on a plurality of executable blocks of the script;

aggregating, at the master computer and based on profile aggregation criteria, the profiling information of the script obtained from each of the computers to form an aggregated profile of the script;

generating, at the master computer, an executable control region for the executable blocks corresponding to the aggregated profile; and

sending, by the master computer, the executable control region to each of the computers.

19. The article of manufacture of claim 18 , wherein the machine executable instructions which, when executed by the machine, performs the method further comprising:

executing, at each of the computers, the script using the generated executable control region.

20. The article of manufacture of claim 18 , wherein the profile aggregation criteria includes at least one of (a) aggregating profiling information from computers having a particular type of processor, (b) aggregating profiling information from computers executing a particular operating system, (c) aggregating profiling information from computers in a particular geography, (d) aggregating profiling information from each of the computers based on a frequency of execution of executable blocks, (e) aggregating profiling information from each of the computers based on a frequency of transitions between executable blocks, (f) aggregating profiling information obtained from each of the computers based on a frequency of execution of a path, or (g) aggregating profiling information obtained from each of the computers based on a combination of any of criteria (a)-(f).

Assignments (1)
CHANGE OF NAME Recorded Jan 27, 2022
From: FACEBOOK, INC.
To: META PLATFORMS, INC.
Reel/Frame 058871/0336 →