Methods for comparing versions of a program
First Claim
Patent Images
1. A system for reusing profile information of a program, comprising:
- a comparator to define a match when a first value equals a second value;
a propagator to propagate profile information when a match is defined; and
a processing engine that processes a portion of a first version of the program to produce the first value and a portion of a second version of the program to produce the second value, wherein the processing engine uses a set of information at a desired fuzziness level to produce the first value and the second value.
1 Assignment
0 Petitions
Accused Products
Abstract
Systems and methods are discussed that allow profile information to be reused by various versions of a program. One illustrative aspect includes a method for comparing versions of a program in binary format. The method includes finding equivalent contents in portions of two versions of the program, finding equivalent structure in the portions of the two versions, and forming a match when a portion of one of the two versions is an equivalence of a portion of the other of the two versions.
-
Citations
46 Claims
-
1. A system for reusing profile information of a program, comprising:
-
a comparator to define a match when a first value equals a second value;
a propagator to propagate profile information when a match is defined; and
a processing engine that processes a portion of a first version of the program to produce the first value and a portion of a second version of the program to produce the second value, wherein the processing engine uses a set of information at a desired fuzziness level to produce the first value and the second value. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A method for comparing versions of a program in binary format, comprising:
-
finding equivalent contents in portions of two versions of the program;
finding equivalent structure in the portions of the two versions; and
forming a match when a portion of one of the two versions is an equivalence to a portion of the other of the two versions. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A computer readable medium having instructions stored thereon for causing a computer to perform a method for comparing versions of a program in binary format, the method comprising:
-
finding equivalent contents in portions of two versions of the program;
finding equivalent structure in the portions of the two versions; and
forming a match when a portion of one of the two versions is an equivalence to a portion of the other of the two versions. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A method for comparing versions of a program in binary format, comprising:
-
finding equivalent procedures in a first version and a second version;
finding equivalent portions of data in equivalent procedures; and
finding equivalent portions of code in equivalent procedures. - View Dependent Claims (17, 18, 19, 20)
-
-
21. A method for comparing procedures in versions of a program, comprising:
-
finding procedures having identical names;
finding procedures by calculating one hash value based on the code;
finding procedures having similar names; and
finding procedures by comparing hash values for portions of procedures. - View Dependent Claims (22, 23, 24, 25, 26)
-
-
27. A method for comparing data in a first version to a second version of a program in binary format, comprising:
-
finding equivalent portions of data using hash values; and
finding equivalent portions of data using positional information in the procedures. - View Dependent Claims (28, 29)
-
-
30. A method for comparing code in a procedure in a first version to a procedure in a second version of a program in binary format, comprising:
-
finding equivalent portions of code using hash values; and
finding equivalent portions of code using control flow. - View Dependent Claims (31, 32, 33, 34)
-
-
35. A method for hashing code to compare versions of a program, comprising:
-
defining an instruction that contains an operand, which appears in a control flow, as a source instruction, and defining the block referred to by the operand as a target block; and
forming a hash value, wherein forming includes calculating the hash value by treating the operand in a block in one version of the program the same as the operand in a block in the other version of the program when the target block has previously been matched to another block. - View Dependent Claims (36, 37, 38, 39)
-
-
40. A method for comparing code in versions of a program, comprising:
-
hashing to form hash values from a set of information at a desired level; and
comparing the hash value of a portion of code in the first version to the hash value of a portion of code in the second version so as to define a match if the hash value of the portion of code in the first version equals the hash value of the portion of code in the second version. - View Dependent Claims (41, 42, 43, 44, 45, 46)
-
Specification