Method and apparatus for data flow analysis
First Claim
1. A method executed in a computer system for performing data flow analysis, the method comprising the steps of:
- A. performing local data flow analysis upon one or more basic blocks of a routine, each of said basic blocks representing a sequence of one or more instructions with no intervening entry or exit point, said local data flow analysis producing local data flow analysis information for each of said basic blocks describing data access of a state container within each of said basic blocks;
B. for each of the basic blocks of the routine;
(i) determining upwardly exposed data references of state containers which are upwardly exposed to definitions of said respective state containers defined in the other said basic blocks, the upwardly exposed data references being dependent upon the definitions of said state containers in said other basic blocks, each state container representing a piece of state information alterable by one or more of said definitions, and (ii) producing, from said determination, local data flow analysis summary information for each state container accessed by the basic block; and
C. performing, using only the produced local data flow analysis summary information, global data flow analysis comprising the step of;
determining merge points and adding corresponding merge point definitions to a list of definitions for the routine only when it has been determined from the local data flow analysis summary information that there is, in a first basic block, a data reference of a state container upwardly exposed to a definition, in a second basic block, of said state container, each of said merge points being a joining definition point within said routine for multiple definitions of said state container, wherein said local data flow analysis information includes summary information, and the step of determining merge points and adding merge point definitions of said routine further comprises the steps of creating a list of definitions for said routine using said summary information from said step of performing said local data flow analysis, determining if there is at least one upwardly exposed data reference of a state container using said summary information, and in response to said determining step adding merge point definitions corresponding to said merge points using said list of definitions, including creating one or more basic block state containers, each of said one or more basic block state containers representing an artificial definition of a state container, each of said one or more basic block state containers being associated with a corresponding basic block and an associated state container and describing how said associated state container is accessed in said corresponding basic block, said artificial definition of an associated state container representing merging definitions for said associated state container in which said corresponding basic block contains no local references and definitions of said associated state container.
6 Assignments
0 Petitions
Accused Products
Abstract
A computer system for executing a binary image conversion system which converts instructions from a instruction set of a first, non native computer system to a second, different, native computer system, includes an run-time system which in response to a non-native image of an application program written for a non-native instruction set provides an native instruction or a native instruction routine. The run-time system collects profile data in response to execution of the native instructions to determine execution characteristics of the non-native instruction. Thereafter, the non-native instructions and the profile statistics are fed to a binary translator operating in a background mode and which is responsive to the profile data generated by the run-time system to form a translated native image. The run-time system and the binary translator are under the control of a server process. The non-native image is executed in two different enviroments with first portion executed as an interpreted image and remaining portions as a translated image. The run-time system includes an interpreter which is capable of handling condition codes corresponding to the non-native architecute. A technique is also provided to jacket calls between the two execution enviroments and to support object based services. Preferred techniques are also provide to determine interprocedural translation units. Further, intermixed translation/optimization techniques are discussed.
-
Citations
15 Claims
-
1. A method executed in a computer system for performing data flow analysis, the method comprising the steps of:
-
A. performing local data flow analysis upon one or more basic blocks of a routine, each of said basic blocks representing a sequence of one or more instructions with no intervening entry or exit point, said local data flow analysis producing local data flow analysis information for each of said basic blocks describing data access of a state container within each of said basic blocks;
B. for each of the basic blocks of the routine;
(i) determining upwardly exposed data references of state containers which are upwardly exposed to definitions of said respective state containers defined in the other said basic blocks, the upwardly exposed data references being dependent upon the definitions of said state containers in said other basic blocks, each state container representing a piece of state information alterable by one or more of said definitions, and (ii) producing, from said determination, local data flow analysis summary information for each state container accessed by the basic block; and
C. performing, using only the produced local data flow analysis summary information, global data flow analysis comprising the step of;
determining merge points and adding corresponding merge point definitions to a list of definitions for the routine only when it has been determined from the local data flow analysis summary information that there is, in a first basic block, a data reference of a state container upwardly exposed to a definition, in a second basic block, of said state container, each of said merge points being a joining definition point within said routine for multiple definitions of said state container, wherein said local data flow analysis information includes summary information, and the step of determining merge points and adding merge point definitions of said routine further comprises the steps of creating a list of definitions for said routine using said summary information from said step of performing said local data flow analysis, determining if there is at least one upwardly exposed data reference of a state container using said summary information, and in response to said determining step adding merge point definitions corresponding to said merge points using said list of definitions, including creating one or more basic block state containers, each of said one or more basic block state containers representing an artificial definition of a state container, each of said one or more basic block state containers being associated with a corresponding basic block and an associated state container and describing how said associated state container is accessed in said corresponding basic block, said artificial definition of an associated state container representing merging definitions for said associated state container in which said corresponding basic block contains no local references and definitions of said associated state container. - View Dependent Claims (2, 3, 4, 5, 6, 7)
producing said intermediate representation using an opcode table, each of said code cells includes an opcode field and one or more operand fields, said opcode field comprising a value from said opcode table representing one of;
a source machine instruction of said first computer architecture, a target machine instruction of said second computer architecture, or a pseudo-instruction in neither said first or said second computer architecture.
-
-
5. The method of claim 2 wherein said data flow analysis method is performed by an optimizing compiler optimizing an intermediate representation of a source program, said optimizing compiler comprising a compiler front end and a compiler back end, said compiler front end producing said intermediate representation that is optimized by said compiler back end producing machine instructions.
-
6. The method of claim 1, wherein said local analysis information includes summary information, and the method includes the step of:
storing said summary information in a basic block state container, said basic block state container being associated with a corresponding basic block and an associated state container and describing how said associated state container is accessed in said corresponding basic block.
-
7. The method of claim 1, wherein data access of a state container within a basic block is one of four patterns:
-
a first pattern comprising read and write access or a read-modify-write access, within the basic block, of the state container;
a second pattern comprising only read access, within the basic block, of the state container;
a third pattern comprising no access, within the basic block, of the state container; and
a fourth pattern comprising only write access, within the basic block, of the state container.
-
-
8. A computer apparatus for storing data flow analysis information comprising:
-
an intermediate representation of a processor routine, the processor routine comprising one or more basic blocks, each of said basic blocks comprising one or more instructions with no intervening entry or exit point, and the intermediate representation comprising one or more basic block data structures, each basic block data structure being associated with one of the basic blocks, and each basic block data structure being associated with a sequence of one or more code cells representing the one or more instructions of the associated basic block, each code cell comprising an opcode and one or more operands;
a state container for holding state information alterable by one or more instructions in the routine;
one or more basic block values for storing local data flow analysis information, wherein each of said basic block values represents a unique data value accessed within a basic block associated with said state container, and wherein an operand of one of said code cells is said state container, said operand being associated with one of said basic block values of said state container; and
a basic block state container associated with said state container, said basic block, and said one or more basic block values, said basic block state container comprising local data flow analysis summary information describing how said state container is accessed within said basic block, and global data flow analysis information produced by a global data flow analysis, such that a global data value definition of said state container, defined within a first basic block by a first code cell and globally referenced in a second basic block by a second code cell, is represented in the global data flow analysis information as a first basic block value associated with a first basic block state container, said second code cell reference to said global data value definition being represented as a second basic block value having upward exposed read dependency of the definition supplied in said first basic block value as described in local data flow analysis summary information associated with the first and second basic block state containers, said second basic block value being associated with a second basic block state container that is associated with said first basic block state container, such that all local data flow analysis summary information about a basic block needed for global data flow analysis is obtained by examining only the basic block state containers associated with a basic block and only local data flow analysis summary information is used to perform the global data flow analysis such that local data flow analysis information is substantially independent from global data flow analysis information. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15)
a read list head field associated with an operand which is the first operand within a basic block associated with said basic block value to read a data value associated with said corresponding basic block value;
a definition field associated with an operand which defines said data value;
a basic block state container field associated with a basic block state container associated with a state container;
a modify write boolean field set to true when the definition for said data value results from a read-modify write access;
a read_modify pointer field identifies an operand, if any, which performs a read and a destructive write operation to said state container; and
a basic block value next field associated with another basic block values data structure corresponding to another one of said basic block values.
-
-
13. The memory of claim 8 wherein each of said basic block state containers correspond to a basic block state container data structure comprising:
-
a use list head field, used in global data flow analysis, identifying global data references to a data value defined in a basic block associated with said basic block state container, each of said global data references being made in another basic block;
a define list head field, used in global data flow analysis, identifying global data definitions, each of said global data definitions being read within said corresponding basic block and defined in anther basic block;
a state container field identifying a state container;
a basic block value list head field identifying basic block values associated with said state container;
a basic block pointer associated with a basic block data structure identifying said corresponding basic block;
a basic block summary information field describing how basic block values within said corresponding basic block access said state container; and
a next basic block state container field identifying another basic block state container associated with said state container.
-
-
14. The memory of claim 13 wherein said basic block summary information field indicates one of:
-
read indicating that only read access are performed within said corresponding basic block;
write indicating that the first use of said state container within said corresponding basic block is a write access;
read_write indicating that a read access is performed within said corresponding basic block that is dependent upon a global definition within another of said basic blocks;
read_modify_write indicating that all definitions within said corresponding basic block are read-modify write accesses; and
no_access indicating that said state container is not accessed within said corresponding basic block.
-
-
15. The memory of claim 8 wherein a basic block data structure corresponds to one of said basic blocks and further comprises:
-
an instruction forward field associated with a first codecell included in said corresponding basic block;
an instruction backward field associated with a last codecell included in said corresponding basic block;
a basic block state container head pointer field associated with basic block state containers of said corresponding basic block;
an inward control flow edge list identifying incoming control flow edges from other basic blocks indicating those basic blocks that preceed said corresponding basic block in control flow; and
an outward control flow edge list identifying outgoing control flow edges to other basic blocks from the corresponding basic block, each of said outward control flow edges identifying a basic block that follows said corresponding basic block in control flow.
-
Specification