Data flow analysis of transactional processes
First Claim
1. A computer-implemented method of compiling computer code, comprising:
- creating a flowgraph according to abstract computer instructions, wherein the flowgraph has a plurality of basic blocks and at least one data object, and wherein the abstract instructions are translated from a parse tree formed from computer code;
assigning a depth-first order to the plurality of basic blocks;
determining a dominance relationship between the plurality of basic blocks;
determining whether any loops are present within the flowgraph and, if any loops are present, identifying the loops;
determining a usage of the at least one data object;
determining a creation point, destruction point and lock point for the at least one data object according to the usage, identified loops, dominance relationship and depth-first order of the plurality of basic blocks; and
inserting instructions into the computer code to create the at least one data object at the creation point, to destroy the at least one data object at the destruction point and to lock the at least one data object at the lock point.
2 Assignments
0 Petitions
Accused Products
Abstract
A XLANG/s compilation method is provided that uses data flow analysis of a program'"'"'s flow graph to determine lifetimes of a data object. A flowgraph is created according to abstract computer instructions. A depth-first order is assigned to basic blocks and a dominance relationship between the basic blocks is determined. A determination is made as to whether any loops are present within the flowgraph and, if so, the loops are identified. A creation point, destruction point and lock point for the data object is determined. Instructions are inserted into the computer code to create the at least one data object at the creation point, to destroy the data object at the destruction point and to lock the data object at the lock point.
29 Citations
47 Claims
-
1. A computer-implemented method of compiling computer code, comprising:
-
creating a flowgraph according to abstract computer instructions, wherein the flowgraph has a plurality of basic blocks and at least one data object, and wherein the abstract instructions are translated from a parse tree formed from computer code;
assigning a depth-first order to the plurality of basic blocks;
determining a dominance relationship between the plurality of basic blocks;
determining whether any loops are present within the flowgraph and, if any loops are present, identifying the loops;
determining a usage of the at least one data object;
determining a creation point, destruction point and lock point for the at least one data object according to the usage, identified loops, dominance relationship and depth-first order of the plurality of basic blocks; and
inserting instructions into the computer code to create the at least one data object at the creation point, to destroy the at least one data object at the destruction point and to lock the at least one data object at the lock point. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
-
-
20. A computer-readable medium having computer-executable instructions for compiling computer code, the method comprising:
-
creating a flowgraph according to abstract computer instructions, wherein the flowgraph has a plurality of basic blocks and at least one data object, and wherein the abstract instructions are translated from a parse tree formed from computer code;
assigning a depth-first order to the plurality of basic blocks;
determining a dominance relationship between the plurality of basic blocks;
determining whether any loops are present within the flowgraph and, if any loops are present, identifying the loops;
determining a usage of the at least one data object;
determining a creation point, destruction point and lock point for the at least one data object according to the usage, identified loops, dominance relationship and depth-first order of the plurality of basic blocks; and
inserting instructions into the computer code to create the at least one data object at the creation point, to destroy the at least one data object at the destruction point and to lock the at least one data object at the lock point. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38)
-
-
39. A method of compiling XLANG/s code, comprising:
-
creating a flowgraph having a plurality of basic blocks and at least one data object according to abstract computer instructions;
assigning a depth-first order to the plurality of basic blocks;
determining a dominance relationship between the plurality of basic blocks;
identifying any loops formed by the plurality of basic blocks;
determining a usage of the at least one data object according to the abstract instructions;
determining a creation point, destruction point and lock point for the at least one data object according to the usage, identified loops, dominance relationship and depth-first order of the plurality of basic blocks; and
inserting instructions into the computer code to create the at least one data object at the creation point, to destroy the at least one data object at the destruction point and to lock the at least one data object at the lock point. - View Dependent Claims (40, 41, 42, 43, 44, 45, 46, 47)
-
Specification