Legal claims defining the scope of protection, as filed with the USPTO.
1. A system for modifying applications comprising: logic to: generate a dominator tree based on a control flow graph for source code, wherein the control flow graph and the dominator tree comprise a plurality of nodes corresponding to basic blocks of the source code; select a region based on a leaf node of the dominator tree, the region based on an instruction threshold, wherein the instruction threshold indicates a maximum number of instructions per region; insert a first set of commit instructions into the source code to save a first state based on entry points into the region; insert a second set of commit instructions into the source code to save a second state based on exit points from the region; update the dominator tree to exclude the selected region; and compile the source code into an executable application, wherein the first set of commit instructions and the second set of commit instructions enable incremental checkpoints.
2. The system of claim 1 , wherein each of the basic blocks comprise one entry point and one exit point.
3. The system of claim 1 , wherein the logic is to: determine that the dominator tree comprises a number of nodes that exceeds the instruction threshold after updating the dominator tree to exclude the selected region; and select a second region based on a second leaf node of the updated dominator tree.
4. The system of claim 3 , wherein the logic is to: determine that the second region is below the instruction threshold; and generate a termination indicator to indicate that the dominator tree has been separated into a maximum number of regions.
5. The system of claim 1 , wherein the logic is to: detect that the leaf node in the dominator tree comprises a function call; and split the leaf node into three nodes corresponding to the function call, instructions prior to the function call, and instructions following the function call.
6. The system of claim 1 , wherein the leaf node corresponds to a deepest node in the dominator tree that is not assigned to a previously selected region.
7. The system of claim 1 , wherein the logic is to select the region by determining that the leaf node, a parent node, and a plurality of child nodes of the parent node have a combined weight below the instruction threshold.
8. The system of claim 7 , wherein the combined weight of the leaf node, the parent node, and the plurality of child nodes of the parent node comprises an aggregated instruction count.
9. A method for modifying applications comprising: generating a dominator tree based on a control flow graph for source code, wherein the control flow graph and the dominator tree comprise a plurality of nodes corresponding to basic blocks of the source code; selecting a region based on a leaf node of the dominator tree, the region based on an instruction threshold, wherein the instruction threshold indicates a maximum number of instructions per region; inserting a first set of commit instructions into the source code to save a first state based on entry points into the region; inserting a second set of commit instructions into the source code to save a second state based on exit points from the region; updating the dominator tree to exclude the selected region; and compiling the source code into an executable application, wherein the first commit instruction and the second commit instruction enable incremental checkpoints.
10. The method of claim 9 , wherein each of the basic blocks comprise one entry point and one exit point.
11. The method of claim 9 , comprising: determining that the dominator tree comprises a number of nodes that exceeds the instruction threshold after updating the dominator tree to exclude the selected region; and selecting a second region based on a second leaf node of the updated dominator tree.
12. The method of claim 9 , comprising: detecting that the leaf node in the dominator tree comprises a function call; and splitting the leaf node into three nodes corresponding to the function call, instructions prior to the function call, and instructions following the function call.
13. The method of claim 9 , wherein the leaf node corresponds to a deepest node in the dominator tree that is not assigned to a previously selected region.
14. The method of claim 9 , comprising selecting the region by determining that the leaf node, a parent node, and a plurality of child nodes of the parent node have a combined weight below the instruction threshold.
15. The method of claim 14 , wherein the combined weight of the leaf node, the parent node, and the plurality of child nodes of the parent node comprises an aggregated loop count.
16. A tangible, non-transitory computer readable media for modifying applications comprising a plurality of instructions that in response to being executed by a processor, cause the processor to: generate a dominator tree based on a control flow graph for source code, wherein the control flow graph and the dominator tree comprise a plurality of nodes corresponding to basic blocks of the source code; select a region based on a leaf node of the dominator tree, the region based on an instruction threshold; insert a first set of commit instructions into the source code to save a first state comprising heap information based on entry points into the region; insert a second set of commit instructions into the source code to save a second state comprising heap information based on exit points from the region; update the dominator tree to exclude the selected region; and compile the source code into an executable application, wherein the first set of commit instructions and the second set of commit instructions enable incremental checkpoints.
17. The tangible, non-transitory computer-readable media of claim 16 , wherein the plurality of instructions cause the processor to determine that the dominator tree comprises a number of nodes that exceeds the instruction threshold after updating the dominator tree to exclude the selected region; and select a second region based on a second leaf node of the updated dominator tree.
18. The tangible, non-transitory computer-readable media of claim 16 , wherein the plurality of instructions cause the processor to: detect that the leaf node in the dominator tree comprises a function call; and split the leaf node into three nodes corresponding to the function call, instructions prior to the function call, and instructions following the function call.
Unknown
July 17, 2018
Browse 5M+ US patents with plain-English claim translations and AI-generated analysis.