Claims Analysis
Total Claims: 11
Claim 1
Independent Claim
136 words
A method for partitioning a computer program with multiple procedures into compilation modules on a data processing system having defined constraints, comprising the computer-executed steps of: defining a constraint; determining frequency of execution class as between pairs of all of the procedures in the program; determining instruction size of all of the procedures in the program; dividing the procedures of the program into at least one group, each group having no interferences between procedures; and subdividing each group into compilation units by: i) dividing a remaining pair of procedures having a highest frequency of execution calls into one compilation unit, ii) aggregating the instruction size of the procedures in the one compilation unit, and iii) repeating steps i) and ii) while the aggregate instruction size in the one compilation unit is less than the defined constraint.
Claim 2
Independent Claim
136 words
A method for partitioning a computer program with multiple procedures into compilation modules on a data processing system having defined constraints, comprising the computer-executed steps of: defining a constraint; determining frequency of execution class as between pairs of all of the procedures in the program; determining instruction size of all of the procedures in the program; dividing the procedures of the program into at least one group, each group having no interferences between procedures; and subdividing each group into compilation units by: i) dividing a remaining pair of procedures having a highest frequency of execution calls into one compilation unit, ii) aggregating the instruction size of the procedures in the one compilation unit, and iii) repeating steps i) and ii) while the aggregate instruction size in the one compilation unit is less than the defined constraint.
Claim 3
Dependent Claim
24 words
A method, according to claim 1, wherein the steps of determining frequency of execution calls and determining instruction size comprise constructing a call-weighted multigraph.
Claim 4
Dependent Claim
26 words
A method, according to claim 1, wherein the steps of dividing the procedures of the program into at least one group comprises constructing an interference graph.
Claim 5
Dependent Claim
102 words
A program storage device readable by a machine in a data processing system having preset memory size constraints, tangibly embodying a program of instructions executable by the machine to perform method steps for partitioning a computer program with multiple procedures into compilation modules, said method steps comprising: i) dividing a remaining pair of procedures having a highest frequency of execution calls into one compilation unit, ii) aggregating the instruction size of the procedures in the one compilation unit, and iii) repeating steps i) and ii) while the aggregate instruction size in the one compilation unit is less than the preset memory size.
Claim 6
Dependent Claim
102 words
A program storage device readable by a machine in a data processing system having preset memory size constraints, tangibly embodying a program of instructions executable by the machine to perform method steps for partitioning a computer program with multiple procedures into compilation modules, said method steps comprising: i) dividing a remaining pair of procedures having a highest frequency of execution calls into one compilation unit, ii) aggregating the instruction size of the procedures in the one compilation unit, and iii) repeating steps i) and ii) while the aggregate instruction size in the one compilation unit is less than the preset memory size.
Claim 7
Dependent Claim
173 words
In a computer system having a constraint defined by the computer system or by the user, a method for compiling a computer program into compilation units in a multi-pass compiler capable of generating a call-weighted multigraph having nodes denoting procedures in the computer program, weights on the nodes denoting relative instruction size, edges between the nodes representing execution calls and edge weights representing execution call frequency, the method comprising the computer-executed steps of: i) defining a constraint; ii) sorting the edge weights into a highest to lowest sorted list; iii) selecting an edge having a highest edge weight and any node or nodes connecting to said edge remaining for selection; iv) aggregating the weight of the selected node or nodes; v) dividing the edge and the selected node or nodes into compilation unit having an aggregate node weight not exceeding the constraint when the aggregate weight of the selected node or nodes is added; vi) removing the selected edge from the sorted list; and vii) repeating steps iii) through via for all edges.
Claim 8
Dependent Claim
173 words
In a computer system having a constraint defined by the computer system or by the user, a method for compiling a computer program into compilation units in a multi-pass compiler capable of generating a call-weighted multigraph having nodes denoting procedures in the computer program, weights on the nodes denoting relative instruction size, edges between the nodes representing execution calls and edge weights representing execution call frequency, the method comprising the computer-executed steps of: i) defining a constraint; ii) sorting the edge weights into a highest to lowest sorted list; iii) selecting an edge having a highest edge weight and any node or nodes connecting to said edge remaining for selection; iv) aggregating the weight of the selected node or nodes; v) dividing the edge and the selected node or nodes into compilation unit having an aggregate node weight not exceeding the constraint when the aggregate weight of the selected node or nodes is added; vi) removing the selected edge from the sorted list; and vii) repeating steps iii) through via for all edges.
Claim 9
Dependent Claim
35 words
A method according to claim 5, further comprising the step of sorting the nodes by interference prior to dividing any selected nodes into a compilation unit, whereby to divide nodes into compilation units without interferences.
Claim 10
Dependent Claim
192 words
A program storage device readable by a machine in a data processing system having preset memory size constraints, tangibly embodying a program of instructions executable by the machine to perform method steps for partitioning a computer program with multiple procedures into compilation modules, said method steps comprising: i) defining a graph with nodes, edges, and edge weights, each node representing a respective procedure of said multiple procedures, each edge connecting two respective nodes and representing a call between the two respective nodes, each edge weight representing an execution count between two respective procedures; ii) sorting the edge weights into a highest to lowest sorted list; iii) selecting an edge having a highest edge weight and any node or nodes connecting to said edge remaining for selection; vi) aggregating the weight of the selected node or nodes; v) dividing the edge and the selected node or nodes into compilation unit having an aggregate node weight not exceeding the size constraint on memory when the aggregate weight of the selected node or nodes is added; vi) removing the selected edge from the sorted list; and vii) repeating steps iii) through vi) for all edges.
Claim 11
Dependent Claim
192 words
A program storage device readable by a machine in a data processing system having preset memory size constraints, tangibly embodying a program of instructions executable by the machine to perform method steps for partitioning a computer program with multiple procedures into compilation modules, said method steps comprising: i) defining a graph with nodes, edges, and edge weights, each node representing a respective procedure of said multiple procedures, each edge connecting two respective nodes and representing a call between the two respective nodes, each edge weight representing an execution count between two respective procedures; ii) sorting the edge weights into a highest to lowest sorted list; iii) selecting an edge having a highest edge weight and any node or nodes connecting to said edge remaining for selection; vi) aggregating the weight of the selected node or nodes; v) dividing the edge and the selected node or nodes into compilation unit having an aggregate node weight not exceeding the size constraint on memory when the aggregate weight of the selected node or nodes is added; vi) removing the selected edge from the sorted list; and vii) repeating steps iii) through vi) for all edges.