Claims Analysis
Total Claims: 14
Claim 1
Independent Claim
223 words
In a computer system having data processor, a method of dynamically compiling portions of non-native applications into native code blocks during execution of the non-native applications, comprising the steps of: receiving a request to execute a specified instruction in a specified non-native application; defining a compilation window composing a subset of the non-native instructions in said specified non-native application, said compilation window including an entry point instruction, comprising said specified instruction, and a block of at least one hundred non-native instructions that includes said entry point instruction; defining as qualifying instructions all non-native instructions in said compilation window that are reachable from the entry point instruction during execution of the non-native application without executing non-native instructions outside the compilation window and without having to first execute a non-native instruction whose successor instruction cannot be determined during compilation of said non-native application; cross-compiling said qualifying instructions into a block of native code instructions; storing said native code block in a code cache in said computer system's memory, and storing in a look-up table, stored in said memory, an entry cross-referencing said entry point instruction with said native code block's location in said code cache; and invoking execution of said block of native code instructions beginning at a native code instruction in said block of native code instructions that corresponds to said entry point instruction.
Claim 2
Dependent Claim
223 words
In a computer system having data processor, a method of dynamically compiling portions of non-native applications into native code blocks during execution of the non-native applications, comprising the steps of: receiving a request to execute a specified instruction in a specified non-native application; defining a compilation window composing a subset of the non-native instructions in said specified non-native application, said compilation window including an entry point instruction, comprising said specified instruction, and a block of at least one hundred non-native instructions that includes said entry point instruction; defining as qualifying instructions all non-native instructions in said compilation window that are reachable from the entry point instruction during execution of the non-native application without executing non-native instructions outside the compilation window and without having to first execute a non-native instruction whose successor instruction cannot be determined during compilation of said non-native application; cross-compiling said qualifying instructions into a block of native code instructions; storing said native code block in a code cache in said computer system's memory, and storing in a look-up table, stored in said memory, an entry cross-referencing said entry point instruction with said native code block's location in said code cache; and invoking execution of said block of native code instructions beginning at a native code instruction in said block of native code instructions that corresponds to said entry point instruction.
Claim 3
Dependent Claim
114 words
The method of claim 1, further including, prior to said cross-compiling step, storing in an information table for each of qualifying instructions data representing non-native condition codes used by said each qualifying instruction, non-native condition codes modified by said each qualifying instruction, and non-native condition codes required for use by successors of said each qualifying instruction; and said cross-compiling step including generating for each said qualifying instruction a set of native code instructions to generate and store values for only those of said non-native condition codes that, in accordance with said data in said information table, are both modified by said qualifying instruction and are required for use by successors of said qualifying instruction.
Claim 4
Dependent Claim
95 words
The method of claim 2, said cross-compiling step including determining for each said qualifying instruction composing a branch instruction that is not itself a target of any branch instruction among said qualifying instructions whether said branch instruction's immediate predecessor instruction always sets or always clears a non-native condition code utilized by said branch instruction, and when said determination is positive generating an optimized set of native code instructions for said preceding instruction and said branch instruction that do not process said non-native condition code that is always set or always cleared by said predecessor instruction.
Claim 5
Dependent Claim
62 words
The method of claim 1, said cross-compiling step including generating for each said qualifying instruction composing a full cache flush instruction a native code instruction that invokes a first predefined procedure, said first predefined procedure clearing said computer system's cache memory and clearing all entries in said look-up table other than entries corresponding to non-native applications known not to be self-modifying applications.
Claim 6
Dependent Claim
66 words
The method of claim 1, said cross-compiling step including generating for each said qualifying instruction composing a full cache flush instruction a native code instruction that invokes a first predefined procedure, said first predefined procedure clearing said computer system's cache memory and clearing all entries in said look-up table other than entries corresponding to non-native applications stored in a read only memory in said computer system.
Claim 7
Dependent Claim
194 words
The method of claim 1, further including, defining a code chunk map that includes an entry for each page of said computer system's memory, each said entry indicating for an associated page of said memory whether said code cache stores at least one code block corresponding to a non-native entry point instruction in said associated page; said cross-compiling step including setting an entry in said code chunk map corresponding to said entry point instruction's location in said computer system's memory; and said cross-compiling step further including generating for each said qualifying instruction composing a partial cache flush instruction a native code instruction that invokes a predefined partial cache flush procedure, said predefined partial cache flush procedure clearing a specified address range from said computer system's cache memory, inspecting the code chunk map entries corresponding to the specified address range flushed from the cache memory, and for each such code chunk map entry that indicates said code cache contains a code block corresponding to a non-native entry point instruction in said associated page, clearing a corresponding portion of the lookup table so as to prevent use of the corresponding code blocks in the code cache.
Claim 8
Dependent Claim
238 words
A computer program product for directing a computer to dynamically compile portions of non-native applications into native code blocks during execution of the non-native applications, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising: (A) a decoder procedure for decoding at least a portion of a specified non-native application that includes a specified instruction, said decoder procedure including instructions for: (A1) defining a compilation window composing a subset of the non-native instructions in said specified non-native application, said compilation window including an entry point instruction, comprising said specified instruction, and a block of at least one hundred non-native instructions that includes said entry point instruction; and (A2) defining as qualifying instructions all non-native instructions in said compilation window that are reachable from the entry point instruction during execution of the non-native application without executing non-native instructions outside the compilation window and without having to first execute a non-native instruction whose successor instruction cannot be determined during compilation of said non-native application; and (B) a cross-compilation procedure for compiling said qualifying instructions into a block of native code instructions; said cross-compiling procedure including instructions for storing said native code block in a code cache in said computer system's memory, and storing in a look-up table, stored in said memory, an entry cross-referencing said entry point instruction with said native code block's location in said code cache.
Claim 9
Dependent Claim
238 words
A computer program product for directing a computer to dynamically compile portions of non-native applications into native code blocks during execution of the non-native applications, the computer program product comprising a computer readable storage medium and a computer program mechanism embedded therein, the computer program mechanism comprising: (A) a decoder procedure for decoding at least a portion of a specified non-native application that includes a specified instruction, said decoder procedure including instructions for: (A1) defining a compilation window composing a subset of the non-native instructions in said specified non-native application, said compilation window including an entry point instruction, comprising said specified instruction, and a block of at least one hundred non-native instructions that includes said entry point instruction; and (A2) defining as qualifying instructions all non-native instructions in said compilation window that are reachable from the entry point instruction during execution of the non-native application without executing non-native instructions outside the compilation window and without having to first execute a non-native instruction whose successor instruction cannot be determined during compilation of said non-native application; and (B) a cross-compilation procedure for compiling said qualifying instructions into a block of native code instructions; said cross-compiling procedure including instructions for storing said native code block in a code cache in said computer system's memory, and storing in a look-up table, stored in said memory, an entry cross-referencing said entry point instruction with said native code block's location in said code cache.
Claim 10
Dependent Claim
118 words
The computer program product of claim 7, said decoder procedure including instructions for (A3) storing in an information table for each of qualifying instructions data representing non-native condition codes used by said each qualifying instruction, non-native condition codes modified by said each qualifying instruction, and non-native condition codes required for use by successors of said each qualifying instruction; and said cross-compiling procedure including instructions for generating for each said qualifying instruction a set of native code instructions to generate and store values for only those of said non-native condition codes that, in accordance with said data in said information table, are both modified by said qualifying instruction and are required for use by successors of said qualifying instruction.
Claim 11
Dependent Claim
99 words
The computer program product of claim 8, said cross-compiling procedure including instructions for determining for each said qualifying instruction composing a branch instruction that is not itself a target of any branch instruction among said qualifying instructions whether said branch instruction's immediate predecessor instruction always sets or always clears a non-native condition code utilized by said branch instruction, and when said determination is positive generating an optimized set of native code instructions for said preceding instruction and said branch instruction that do not process said non-native condition code that is always set or always cleared by said predecessor instruction.
Claim 12
Dependent Claim
66 words
The computer program product of claim 7, said cross-compiling procedure including instructions for generating for each said qualifying instruction composing a full cache flush instruction a native code instruction that invokes a first predefined procedure, said first predefined procedure clearing said computer system's cache memory and clearing all entries in said look-up table other than entries corresponding to non-native applications known not to be self-modifying applications.
Claim 13
Dependent Claim
70 words
The computer program product of claim 7, said cross-compiling procedure including instructions for generating for each said qualifying instruction composing a full cache flush instruction a native code instruction that invokes a first predefined procedure, said first predefined procedure clearing said computer system's cache memory and clearing all entries in said look-up table other than entries corresponding to non-native applications stored in a read only memory in said computer system.
Claim 14
Dependent Claim
204 words
The computer program product of claim 7, said cross-compiling procedure including instructions for defining a code chunk map that includes an entry for each page of said computer system's memory, each said entry indicating for an associated page of said memory whether said code cache stores at least one code block corresponding to a non-native entry point instruction in said associated page; said cross-compiling procedure including instructions for setting an entry in said code chunk map corresponding to said entry point instruction's location in said computer system's memory; and said cross-compiling procedure further including instructions for generating for each said qualifying instruction composing a partial cache flush instruction a native code instruction that invokes a predefined partial cache flush procedure, said predefined partial cache flush procedure clearing a specified address range from said computer system's cache memory, inspecting the code chunk map entries corresponding to the specified address range flushed from the cache memory, and for each such code chunk map entry that indicates said code cache contains a code block corresponding to a non-native entry point instruction in said associated page, clearing a corresponding portion of the lookup table so as to prevent use of the corresponding code blocks in the code cache.