IP Library Granted Patent US 8,726,255
Granted Patent B2
US 8,726,255 · App. 13/461,757 · Granted May 13, 2014

Recompiling with generic to specific replacement

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,726,255
App. No.
13/461,757
Granted
May 13, 2014
Kind
B2
Abstract

Executable code may be recompiled so that generic portions of code may be replaced with specific portions of code. The recompilation may customize executable code for a specific use or configuration, making the code lightweight and executing faster. The replacement mechanism may replace variable names with fixed values, replace conditional branches with only those branches which are known to be executed, and may eliminate executable code portions that are not executed. The replacement mechanism may comprise identifying known values defined in the executable code for variables, and replacing those variables with the constant value. Once the constants are substituted, the code may be analyzed to identify branches that may be evaluated using the constant values. Those branches may be reformed using the constant value and the rest of the conditional code that may not be accessed may be removed.

Claims (29)

1. A method comprising: receiving a set of executable code; instrumenting said executable code;

executing said executable code to collect data while said executable code executes;

decompiling said set of executable code;

determining variables in said executable code for replacement with constant values, wherein said determining comprises:

receiving a semantic definition of said executable code, said semantic definition being used to identify at least one occurrence of a first variable; and said semantic definition being debugger symbols;

determining a first constant value for a first variable in said executable code, said first constant value being identified from said data; and

for each occurrence of said first variable, replacing said first variable with said first constant value to create a first modified set of executable code;

after determining and replacing variables for constant values, analyzing said first modified set of executable code to identify conditions that are satisfied when said first variable is defined as said first constant value;

for each of said conditions, removing said conditions from said first modified set of executable code by replacing the condition statements with a jump instruction; and recompiling said first modified set of executable code to create a second set of executable code.

2. The method of claim 1 further comprising: identifying an orphan code in a first condition, said first condition being satisfied when said first variable is defined at said first constant value; and removing said orphan code from said first modified set of executable code.

3. The method of claim 2 , said executable code being application code.

4. The method of claim 3 , said decompiling being performed in an executable environment, said executable environment being separate from an operating system.

5. The method of claim 3 , said decompiling being performed in an operating system.

6. The method of claim 4 , said second set of modified executable code comprising operating system code.

7. A method comprising:

receiving a set of executable code;

instrumenting said executable code;

executing said executable code to collect data while said executable code executes;

decompiling said set of executable code;

determining variables in said executable code for replacement with constant values, wherein said determining comprises:

identifying links from said application code to operating system code and incorporating said operating system code into said set of executable code;

receiving a semantic definition of said executable code, said semantic definition being used to identify at least one occurrence of a first variable; and said semantic definition being debugger symbols;

determining a first constant value for a first variable in said executable code, said first constant value being identified from said data; and

for each occurrence of said first variable, replacing said first variable with said first constant value to create a first modified set of executable code;

after determining and replacing variables for constant values, analyzing said first modified set of executable code to identify conditions that are satisfied when said first variable is defined as said first constant value;

for each of said conditions, removing said conditions from said first modified set of executable code by replacing the condition statements with a jump instruction; and

recompiling said first modified set of executable code to create a second set of executable code.

8. The method of claim 7 further comprising: downloading said second set of executable code to a client device.

9. The method of claim 8 , said second set of executable code being the complete set of executable code executing on said client device.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 20, 2015
From: CONCURIX CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 036139/0069 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 2, 2012
From: GOUNARES, ALEXANDER G.; GARRETT, CHARLES D.
To: CONCURIX CORPORATION
Reel/Frame 028146/0357 →