Object-Oriented Call Optimization Using Object Graph Introspection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional compilers face difficulties in optimizing object-oriented program code, particularly in resolving method and function calls due to the complexity introduced by mechanisms such as inheritance and dynamic dispatch, leading to inefficiencies in execution time, memory usage, and power consumption.

Innovation Solution

A method and system that utilize static analysis combined with introspection of an object graph to optimize object-oriented program code, enabling the determination of runtime information and properties that conventional static analysis alone cannot resolve, allowing for more effective optimizations such as de-virtualization, inlining, and elimination of autoboxing.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Manufacturing precision

If conventional static analysis is used to optimize object-oriented program code, then the optimization process is simple, but the optimization effectiveness is insufficient due to inability to resolve dynamic dispatch and inheritance complexities

Engineering Contradiction:
Improveoptimization effectivenessVSAvoidanalysis complexity
Core Design Contradiction:
Manufacturing precisionVSDevice complexity

Solution Approach 1:

The patent segments the analysis process into two distinct phases: static analysis (performed at compile time) and runtime introspection (performed during execution). The static analysis phase generates intermediate representation and identifies potential optimization opportunities, while the runtime phase uses object graph introspection to resolve dynamic dispatch and inheritance relationships. This segmentation allows each phase to focus on specific tasks, improving overall optimization effectiveness without overwhelming complexity in any single phase.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent performs preliminary static analysis before runtime execution to prepare intermediate representation and identify candidate optimization sites. This preliminary action includes generating method invocation graphs and preparing introspection data structures, so that when runtime introspection occurs, the system can quickly resolve dynamic relationships and apply optimizations without significant overhead during execution.

Inventive Principle:
Principle #10Preliminary action

2Manufacturing precision

If runtime introspection of object graph is added to static analysis, then optimization effectiveness improves through resolution of dynamic dispatch, but processing time increases

Engineering Contradiction:
Improveoptimization precisionVSAvoidprocessing time
Core Design Contradiction:
Manufacturing precisionVSLoss of time

Solution Approach 1:

The patent performs preliminary static analysis to pre-compute and store intermediate representation, method invocation graphs, and introspection data structures before runtime execution. This allows the runtime introspection phase to quickly access pre-prepared information about class hierarchies, method resolutions, and object relationships, significantly reducing the time penalty of runtime analysis while maintaining high optimization precision.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The system uses runtime introspection to gather feedback about actual object graph structures and dynamic dispatch behavior, then feeds this information back to the optimization process. This feedback mechanism allows the compiler to make informed decisions about which optimizations to apply based on actual runtime characteristics rather than static assumptions, improving optimization precision while minimizing processing overhead through targeted analysis.

Inventive Principle:
Principle #23Feedback

3Productivity

If de-virtualization and inlining optimizations are applied, then execution time and memory footprint are reduced, but the complexity of the optimization process increases

Engineering Contradiction:
Improveexecution efficiencyVSAvoidoptimization process complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The patent segments the optimization process into distinct stages: static analysis for identifying candidate optimizations, runtime introspection for resolving dynamic relationships, and code generation for applying specific optimizations like de-virtualization and inlining. Each stage handles specific aspects of the optimization problem, reducing the apparent complexity of any single stage while achieving comprehensive optimization results that improve execution efficiency and reduce memory footprint.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The system changes parameters such as method invocation types (from virtual to static), object representation (from dynamic to static where possible), and code structure (through inlining) based on information gathered from static and runtime analysis. These parameter changes enable de-virtualization and inlining optimizations that improve execution efficiency and reduce memory footprint while the segmented approach manages the complexity of applying these transformations.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS12566597B2Optimising computer program code
Publication Date: 2026.03.03 TARAVU LTD
  • US12566597B2 patent drawing
  • US12566597B2 patent drawing
  • US12566597B2 patent drawing

AI summary

A computer-implemented method for optimising object-oriented program code comprises receiving object-oriented program code and performing a static analysis on a call of the object-oriented program code to simulate an effect of the call on an abstract state. Static-analysis data is generated, representative of the effect of the call on the abstract state. An object graph, generated from the program code, is introspectively accessed to determine a property of the call. Optimised program code is generated from the received object-oriented program code, using the static-analysis data and the determined property to optimise the call in the optimised program code.