US 7,370,321 B2
Systems and methods to read, optimize, and verify byte codes for a multiplatform jit
Jim Radigan, Redmond, Wash. (US)
Assigned to Microsoft Corporation, Redmond, Wash. (US)
Filed on Nov. 14, 2002, as Appl. No. 10/294,362.
Prior Publication US 2004/0098710 A1, May 20, 2004
Int. Cl. G06F 9/45 (2006.01)
U.S. Cl. 717—144 26 Claims
OG exemplary drawing
 
1. In a computer system, a process of mapping arbitrary flow and definition points from an intermediate language (IL), the IL comprising byte codes, to an internal compiler representation, the process comprising:
creating a flow graph having a plurality of nodes with pointers to the byte codes, the pointers indicating beginning and ending byte code offsets;
identifying a plurality of definitions in the IL;
mapping the definitions to the flow graph nodes;
translating the IL into a compiler intermediate representation;
performing global verification and optimization of the compiler intermediate representation in a single pass; and
populating the flow graph nodes with the compiler intermediate representation,
wherein the steps of creating the flow graph, identifying the definitions, and mapping the definitions are performed during a single pass over the IL,
wherein the steps of translating the IL and populating the flow graph nodes are performed during a subsequent single pass over the IL,
wherein the global verification comprises the avoidance of processing unreachable code, and is performed while translating the IL into the compiler intermediate representation used for further optimization and final machine code generation, and
wherein the optimization is performed while translating the IL into a form for final machine code generation.