Methods for comparing versions of a program
First Claim
Patent Images
1. A computer-implemented method for propagating profile information from a first version of a program into a second version of a program, the method comprising:
- identifying a portion of the first version of the program, wherein the portion of the first version of the program is in a binary format;
identifying a portion of the second version of the program, wherein the portion of the second version of the program is in a binary format;
determining whether the portion of the first version of the program is equivalent to the portion of the second version of the program;
reusing preexisting profile information from the first version of the program for the second version of the program when the portion of the first version of the program is equivalent to the portion of the second version of the program, wherein the preexisting profile information includes the execution characteristics of the portion of the first version during runtime;
when the portion of the first version of the program is not equivalent to the portion of the second version of the program,determining whether the portion of the first version of the program matches the portion of the second version of the program according to a fuzziness level, wherein the fuzziness level includes at least one member of a group comprising;
a fuzziness level having opcodes and operands included in the fuzziness level, a fuzziness level having address offsets excluded from the fuzziness level, a fuzziness level having an address offset from a beginning of a target block excluded from the fuzziness level, a fuzziness level having immediate operands and operands of return instructions excluded from the fuzziness level, a fuzziness level having opcode and types of operands included in the fuzziness level, and a fuzziness level having only opcode included in the fuzziness level,reusing preexisting profile information from the first version of the program for the second version of the program when the portion of the first version of the program matches the portion of the second version of the program according to the fuzziness level, wherein the preexisting profile information includes the execution characteristics of the portion of the first version during runtime, andwhen the portion of the first version of the program does not match the portion of the second version of the program according to the fuzziness level, collecting new profile information for the portion of the second version of the program.
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.
56 Citations
17 Claims
-
1. A computer-implemented method for propagating profile information from a first version of a program into a second version of a program, the method comprising:
-
identifying a portion of the first version of the program, wherein the portion of the first version of the program is in a binary format; identifying a portion of the second version of the program, wherein the portion of the second version of the program is in a binary format; determining whether the portion of the first version of the program is equivalent to the portion of the second version of the program; reusing preexisting profile information from the first version of the program for the second version of the program when the portion of the first version of the program is equivalent to the portion of the second version of the program, wherein the preexisting profile information includes the execution characteristics of the portion of the first version during runtime; when the portion of the first version of the program is not equivalent to the portion of the second version of the program, determining whether the portion of the first version of the program matches the portion of the second version of the program according to a fuzziness level, wherein the fuzziness level includes at least one member of a group comprising;
a fuzziness level having opcodes and operands included in the fuzziness level, a fuzziness level having address offsets excluded from the fuzziness level, a fuzziness level having an address offset from a beginning of a target block excluded from the fuzziness level, a fuzziness level having immediate operands and operands of return instructions excluded from the fuzziness level, a fuzziness level having opcode and types of operands included in the fuzziness level, and a fuzziness level having only opcode included in the fuzziness level,reusing preexisting profile information from the first version of the program for the second version of the program when the portion of the first version of the program matches the portion of the second version of the program according to the fuzziness level, wherein the preexisting profile information includes the execution characteristics of the portion of the first version during runtime, and when the portion of the first version of the program does not match the portion of the second version of the program according to the fuzziness level, collecting new profile information for the portion of the second version of the program. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A computer-readable storage medium having computer executable instructions for propagating profile information from a first version of a program into a second version of a program, the instructions comprising:
-
identifying a portion of the first version of the program; identifying a portion of the second version of the program; determining whether the portion of the first version of the program matches the portion of the second version of the program according to a fuzziness level, wherein the fuzziness level includes at least one member of a group comprising;
a fuzziness level having opcodes and operands included in the fuzziness level, a fuzziness level having address offsets excluded from the fuzziness level, a fuzziness level having an address offset from a beginning of a target block excluded from the fuzziness level, a fuzziness level having immediate operands and operands of return instructions excluded from the fuzziness level, a fuzziness level having opcode and types of operands included in the fuzziness level, and a fuzziness level having only opcode included in the fuzziness level; andreusing preexisting profile information from the first version of the program for the second version of the program when the portion of the first version of the program matches the portion of the second version of the program according to the fuzziness level, wherein the preexisting profile information includes the execution characteristics of the portion of the first version during runtime. - View Dependent Claims (8, 9, 10, 11, 12)
-
-
13. A system for propagating profile information from a first version of a program into a second version of a program, the system comprising:
-
a processor; and a memory having computer executable instruction, wherein the computer-executable instructions are configured for; identifying a portion of the first version of the program; identifying a portion of the second version of the program; determining whether the portion of the first version of the program matches the portion of the second version of the program according to a fuzziness level, wherein the fuzziness level includes at least one member of a group comprising;
a fuzziness level having opcodes and operands included in the fuzziness level, a fuzziness level having address offsets excluded from the fuzziness level, a fuzziness level having an address offset from a beginning of a target block excluded from the fuzziness level, a fuzziness level having immediate operands and operands of return instructions excluded from the fuzziness level, a fuzziness level having opcode and types of operands included in the fuzziness level, and a fuzziness level having only opcode included in the fuzziness level; andreusing preexisting profile information from the first version of the program for the second version of the program when the portion of the first version of the program matches the portion of the second version of the program according to the fuzziness level, wherein the preexisting profile information includes the execution characteristics of the portion of the first version during runtime. - View Dependent Claims (14, 15, 16, 17)
-
Specification