Just-ahead-of-time compilation
AssigneeMicrosoft Corporation
InventorMatthew B. Grice
Life of this patent
Estimating the term…
Abstract
Pre-compiling postdominating functions. Some embodiments may be practiced in a computing environment including a runtime compilation. For example one method includes acts for compiling functions. The method includes determining that a function of an application has been called. A control flow graph is used to determine one or more postdominance relationships between the function and one or more other functions. The one or more other functions are assigned to be pre-compiled based on the postdominance relationship.
Claims20
In a computing environment comprising a runtime compilation, a method of compiling functions, the method comprising:
- determining that a function of an application has been called;
- using a control flow graph, determining one or more postdominance relationships between the function and one or more other functions;
- assigning the one or more other functions to be pre-compiled based on the postdominance relationship.
In a computing environment comprising a runtime compilation, a method of compiling functions, the method comprising:
- determining that a function of an application has been called;
- analyzing annotations to the application program, the annotations comprising a postdominance graph including one or more functions of the application program;
- using the postdominance graph, identifying one or more postdominance relationships between the function and the entry of one or more other functions;
- assigning the one or more other functions to be pre-compiled based on the postdominance relationship.
In a computing environment, a computer readable medium comprising computer executable instructions that when executed by a processor are configured to cause the following to be performed:
- determining that a function of an application has been called;
- as a result of determining that the function has been called, starting a compiler, wherein the compiler is configured to read in the function;
- at the compiler decomposing the function into basic blocks,
- constructing a control flow graph, the control flow graph representing the basic blocks in the control flow graph;
- using the control flow graph, determining one or more postdominance relationships between the function and the entry to one or more other functions;
- assigning the one or more other functions to be pre-compiled by at least one of a different processor or virtual processor than a processor compiling the function, based on the postdominance relationship.
Dependencies are inferred from the claim text.