Conditional Just-In-Time Compilation for Environment-Specific Code Adaptation

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current programming approaches distribute a single version of a program to all users, limiting the ability to tailor the program for different user types and uses, as they do not allow for conditional compilation based on the user's environment.

Innovation Solution

Implementing a conditional just-in-time compilation system that loads intermediate language code and modifies it based on the device's current environment, compiling only necessary portions as needed, allowing for dynamic adaptation to user settings and parameters.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Ease of manufacture

If a single version of the program is distributed to all users, then the ease of distribution and version management is improved, but the ability to tailor the program for different user types and environments deteriorates

Engineering Contradiction:
Improveease of distributionVSAvoidability to tailor program
Core Design Contradiction:
Ease of manufactureVSAdaptability or versatility

Solution Approach 1:

The program is segmented into multiple intermediate language assemblies, each tailored to specific user types or environments (e.g., portable class library assembly, Windows desktop assembly, Linux desktop assembly). The compilation system selectively compiles only the relevant assembly for the current environment, providing customized functionality while maintaining a single source code base.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The compilation process uses environment-specific parameters (such as target platform, architecture, and runtime environment) to determine which intermediate language assembly to compile. This allows the same source code to generate different optimized versions based on the deployment environment without requiring manual intervention.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If multiple versions of the program are distributed for different users, then the adaptability and functionality for specific users is improved, but the complexity of version management and distribution deteriorates

Engineering Contradiction:
Improvefunctionality for specific usersVSAvoidversion management complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

Instead of distributing multiple fully compiled versions, the system segments the program into intermediate language assemblies that are environment-tagged. The build system automatically determines which assembly to compile based on the target environment, eliminating the need for manual version management while delivering customized functionality.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

Intermediate language code serves as an intermediary between source code and native machine code. This intermediary layer allows the program to be distributed in a single form (IL assemblies) that can be selectively compiled to different target platforms, simplifying distribution while maintaining adaptability.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Speed

If the entire program is compiled in advance, then the execution speed is improved, but the compilation time and resource usage during distribution deteriorates

Engineering Contradiction:
Improveexecution speedVSAvoidcompilation time
Core Design Contradiction:
SpeedVSLoss of time

Solution Approach 1:

The system performs partial compilation by generating only the specific intermediate language assembly needed for the target environment rather than compiling all possible versions. This reduces compilation time and resource usage during distribution while still providing optimized native code execution for the specific platform.

Inventive Principle:
Principle #16Partial or excessive action

Solution Approach 2:

The intermediate language assemblies are prepared in advance with environment-specific metadata and conditional compilation directives embedded. This preliminary preparation allows the build system to quickly select and compile only the necessary assembly for the current environment, reducing on-demand compilation time.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS7493604B2Conditional compilation of intermediate language code based on current environment
Publication Date: 2009.02.17 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7493604B2 patent drawing
  • US7493604B2 patent drawing
  • US7493604B2 patent drawing

AI summary

Conditional compilation of intermediate language code based on current environment includes loading intermediate language code on a device. Portions of the intermediate language code are conditionally just-in-time compiled based on a current environment of the device. In accordance with certain aspects, intermediate language code is loaded on a device and a current environment of the device is identified. The intermediate language code is modified based on the current environment, and portions of the modified intermediate language code are just-in-time compiled as needed when running the intermediate language code.