Dynamic division optimization for a just-in-time compiler
First Claim
Patent Images
1. A method for improving the performance of a dynamic compiler, comprising:
- receiving a first code;
determining a strategy for optimizing a segment of the first code, wherein determining the strategy includes dynamically determining a best strategy available to the compiler to optimize the segment according to characteristics of the segment;
optimizing the segment of the first code using the determined optimization strategy, wherein optimizing the segment includes dynamically optimizing integer division operations; and
outputting a second code, the second code representing the optimized first code.
1 Assignment
0 Petitions
Accused Products
Abstract
An arrangement is provided for improving the performance of a dynamic compiler, specifically for dynamically optimizing integer division operations. When a compiler receives an integer division code at runtime, the compiler dynamically profiles a divisor of the division code. The integer division code is then optimized based on the characteristics of the divisor, which are determined at runtime.
19 Citations
34 Claims
-
1. A method for improving the performance of a dynamic compiler, comprising:
-
receiving a first code; determining a strategy for optimizing a segment of the first code, wherein determining the strategy includes dynamically determining a best strategy available to the compiler to optimize the segment according to characteristics of the segment; optimizing the segment of the first code using the determined optimization strategy, wherein optimizing the segment includes dynamically optimizing integer division operations; and outputting a second code, the second code representing the optimized first code. - View Dependent Claims (2, 3, 4)
-
-
5. An article comprising a machine accessible medium having content stored thereon, wherein when the content is accessed by a processor, the content provides for improving the performance of a dynamic compiler by:
-
receiving a first code; determining a strategy for optimizing a segment of the first code, wherein determining the strategy includes dynamically determining a best strategy available to the compiler to optimize the segment according to characteristics of the segment; optimizing the segment of the first code using the determined optimization strategy, wherein optimizing the segment includes dynamically optimizing integer division operations; and outputting a second code, the second code representing the optimized first code. - View Dependent Claims (6, 7, 8)
-
-
9. A compiling system, comprising:
-
at least one pre-processing module to receive a first code in a high-level computer programming language; an optimization strategy selection mechanism to determine a strategy for optimizing a segment of the first code, the optimization strategy selection mechanism including a component to dynamically determine a best strategy available to the compiler to optimize the segment according to characteristics of the segment; at least one optimization mechanism to optimize the segment of the first code using the determined optimization strategy, the optimization mechanism including a division optimization mechanism to dynamically optimize integer division operations; a library to provide optimization implementations; and at least one post-processing module to generate a second code based on optimized segments of the first code and optimization implementations in the library. - View Dependent Claims (10, 11)
-
-
12. A method for dynamically optimizing integer division operations, comprising:
-
receiving a division code at runtime; identifying a divisor of the division code; updating information describing the divisor in a divisor cache, if the divisor is not invariant; preparing optimization parameters for the divisor, if the divisor becomes invariant for the first time during runtime; and invoking a division implementation for an invariant divisor using the optimization parameters. - View Dependent Claims (13, 14, 15, 16, 17, 18)
-
-
19. An article comprising:
- a machine accessible medium having content stored thereon, wherein when the content is accessed by a processor, the content provides for dynamically optimizing integer division operations by;
receiving a division code at runtime; identifying a divisor of the division code; updating information describing the divisor in a divisor cache, if the divisor is not invariant; preparing optimization parameters for the divisor, if the divisor becomes invariant for the first time during runtime; and invoking a division implementation for an invariant divisor using the optimization parameters. - View Dependent Claims (20, 21, 22, 23, 24, 25)
- a machine accessible medium having content stored thereon, wherein when the content is accessed by a processor, the content provides for dynamically optimizing integer division operations by;
-
26. A system for dynamically optimizing integer divisions, comprising:
-
a divisor identifier to receive a division code at runtime and to identify a divisor of the division code; a divisor cache to store information describing divisors; a divisor profiling mechanism to profile divisors at runtime and to update the divisor cache; and an optimization preparation mechanism to prepare optimization parameters if the divisor becomes invariant for the first time during runtime. - View Dependent Claims (27, 28, 29, 30, 31, 32, 33, 34)
-
Specification