JIT Compiler Invariant Flag Optimization
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Java JIT compilation of applications with run-time determined software routines results in a large footprint and increased runtime overhead due to the inclusion of conditional checking statements, which prevents optimization by the JIT compiler when variant flags are used, leading to inefficient execution.
Innovation Solution
Employing an invariant flag to make conditional checking statements determinate and using a run-time code replacement facility to change the flag's value, allowing the JIT compiler to optimize and exclude run-time determined software routines from native machine code when deactivated, and include them when activated, utilizing features like Hotswap or Hot Code Replace.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If variant flags are used to determine run-time activation status of software routines, then run-time flexibility is improved, but the application program footprint increases and runtime overhead increases due to conditional checking statements
Solution Approach 1:
The patent applies preliminary action by evaluating the variant flag at compile-time to determine whether to include or exclude run-time determined software routines from the application program. This allows the JIT compiler to make optimizations based on the flag's initial state, reducing the program footprint when routines are deactivated while maintaining the ability to activate them at run-time through code replacement.
2Adaptability or versatility
If variant flags are used to determine run-time activation status of software routines, then run-time flexibility is improved, but runtime overhead increases due to conditional checking statements
Solution Approach 1:
The patent applies preliminary action by evaluating the variant flag at compile-time to determine whether to include or exclude run-time determined software routines from the application program. This allows the JIT compiler to make optimizations based on the flag's initial state, reducing the program footprint when routines are deactivated while maintaining the ability to activate them at run-time through code replacement.
3Adaptability or versatility
If conditional checking statements are included for run-time determined software routines, then run-time activation control is improved, but JIT compilation optimization is prevented due to indeterminate conditions
Solution Approach 1:
The patent applies preliminary action by evaluating the variant flag at compile-time to determine whether to include or exclude run-time determined software routines from the application program. This allows the JIT compiler to make optimizations based on the flag's initial state, reducing the program footprint when routines are deactivated while maintaining the ability to activate them at run-time through code replacement.
Solution Approach 2:
The patent applies parameter changes by using a variant flag that can change its value at run-time to control the inclusion or exclusion of software routines. The flag's value is evaluated at compile-time to determine optimization strategy, but can be changed at run-time to activate or deactivate routines as needed.
Data Source
AI summary
Provided is a JIT compiler that changes the status of run-time determined software routines between being activated and deactivated in an application program. Conditional statements which are used at run-time to determine whether such a routine has been activated or deactivated are presented as discrete conditions that always evaluate to a known result by using an invariant flag in the compiled bytecode. The JIT compiler optimises an application program by excluding discrete condition checks. Consequently, if the branch of the discrete condition that will never execute includes a run-time determined software routine, then the routine will be excluded from the JIT compilation and will not form part of the JIT compiled native machine code. A run-time class or code replacement facility is used as a means of activating or deactivating a run-time determined software routine at run-time by changing the value of the invariant flag of said routine.


