Bytecode Verification Class Relationship Caching

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing bytecode verification processes in managed runtime environments require a linear bytecode walk for each application run, leading to repeated verification tasks and increased startup costs, as they do not effectively utilize cached metadata to avoid duplicative verification.

Innovation Solution

Implementing a bytecode verification method that caches class relationship data in a shared classes cache during the first run, allowing subsequent runs to retrieve cached data instead of re-performing the linear bytecode walk, thus optimizing runtime by deferring class loading and reducing verification overhead.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If a linear bytecode walk is performed for each application run to verify bytecode, then verification completeness is ensured, but startup time and verification overhead increase

Engineering Contradiction:
Improveverification completenessVSAvoidstartup time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent performs the linear bytecode walk and verification during the first application run to pre-compute and cache class relationship data. This preliminary action ensures verification completeness is achieved upfront, so that subsequent runs can rely on the cached data without repeating the expensive verification process, thus reducing startup time in later runs.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent creates a cached copy of the class relationship data obtained from the first linear bytecode walk. This cached copy is stored and reused in subsequent application runs, avoiding the need to re-perform the verification walk. The copy maintains verification completeness while dramatically reducing the time required for subsequent startups.

Inventive Principle:
Principle #26Copying

2Reliability

If bytecode verification is performed in every application run, then safety is maintained, but verification overhead and resource consumption increase

Engineering Contradiction:
ImprovesafetyVSAvoidverification efficiency
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent performs the complete bytecode verification and class relationship analysis during the first application run. This preliminary verification ensures safety is established upfront, and the results are cached for reuse. Subsequent runs benefit from this preliminary work without repeating the expensive verification process, thereby improving verification efficiency while maintaining safety.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent discards the expensive linear bytecode walk operation in subsequent runs by recovering and reusing the cached class relationship data from the first run. The cached data is recovered and validated to ensure it remains accurate, allowing the system to maintain safety without repeating the full verification process, thus improving productivity.

Inventive Principle:
Principle #34Discarding and recovering

3Measurement precision

If class loading is performed for all referenced classes during verification, then verification accuracy is improved, but memory consumption and loading time increase

Engineering Contradiction:
Improveverification accuracyVSAvoidmemory consumption
Core Design Contradiction:
Measurement precisionVSQuantity of substance

Solution Approach 1:

The patent extracts only the essential class relationship data (such as class names, interfaces implemented, and inheritance relationships) from the full class loading process during the first verification run. This extracted data is cached and reused in subsequent runs, maintaining verification accuracy without requiring full class loading. This takes out only the necessary information while avoiding the memory consumption of loading complete class definitions repeatedly.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent creates a lightweight copy of class relationship metadata rather than copying full class definitions. This cached copy contains only the verification-relevant information (class relationships, interfaces, inheritance) needed for accurate verification. The copy uses minimal memory compared to full class loading, yet maintains verification accuracy by preserving the essential structural relationships between classes.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11662983B2Bytecode verification using class relationship caching
Publication Date: 2023.05.30 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US11662983B2 patent drawing
  • US11662983B2 patent drawing
  • US11662983B2 patent drawing

AI summary

A computer-implemented method for bytecode class verification includes: encountering a class requiring verification of its bytecode during a run of an application; determining whether class relationship data for the class exists in a shared classes cache; in response to a determination that the class relationship data for the class does not exist in the shared classes cache: performing a linear bytecode walk of the bytecode to identify relationship data for the class and verify that the bytecode is well-formed; and storing the identified relationship data as the class relationship data for the class in the shared classes cache; in response to a determination that the class relationship data for the class does exist in the shared classes cache: retrieving the class relationship data for the class from the shared classes cache; and processing the class relationship data.