Lowered SDL for Java Try Statements and Exception Flow

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Java reflection techniques fail to provide sufficient information to preserve language constructs such as lambda expressions, try/catch/finally blocks, and loops, limiting the ability to generate new code that maintains the original program's language structures and complicating transformations like differentiated or optimized programs across different language specifications.

Innovation Solution

Generate symbolic description language (SDL) representations of Java source code, which are lowered to a core dialect, preserving program semantics and allowing easier analysis of control and data flow, enabling sharing with multiple consumers without requiring modifications even if the Java language specification changes.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If Java source code is compiled to bytecode, then the code can be executed by the Java Virtual Machine, but language constructs such as lambda expressions, try/catch/finally blocks, loops, and patterns are lost

Engineering Contradiction:
Improvecode execution capabilityVSAvoidlanguage constructs information
Core Design Contradiction:
ReliabilityVSLoss of information

Solution Approach 1:

The patent introduces an intermediary representation (IR) that serves as a mediator between Java source code and bytecode. This IR preserves language constructs while being compilable to bytecode, allowing the JVM to execute the code without losing structural information. The IR acts as a lossless intermediate form that maintains both executability and structural fidelity.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The patent applies preliminary transformation of Java source code into an intermediary representation before compilation to bytecode. This preliminary action preserves language constructs in the IR format, allowing subsequent bytecode generation to maintain structural information that would otherwise be lost in direct compilation.

Inventive Principle:
Principle #10Preliminary action

2Ease of operation

If reflection operations are used to inspect code at runtime, then surface details such as type names and method declarations can be obtained, but the code of method bodies remains opaque and cannot be queried

Engineering Contradiction:
Improvecode inspection capabilityVSAvoidmethod body information
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The intermediary representation serves as a mediator that bridges the gap between runtime reflection capabilities and method body inspection. By maintaining method body information in the IR format during runtime, the system enables querying of previously opaque code structures while preserving the existing reflection interface for surface details.

Inventive Principle:
Principle #24Intermediary (Mediator)

3Measurement precision

If ad-hoc solutions are implemented to access bytecode information, then some bytecode data can be obtained, but the solutions are platform dependent, not generalizable, and may require modifying the compiler itself

Engineering Contradiction:
Improvebytecode information accessVSAvoidimplementation complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The intermediary representation provides a universal, platform-independent solution for accessing and transforming code information. The IR format is designed to be language-agnostic and compiler-agnostic, enabling the same intermediate form to serve multiple purposes including bytecode generation, optimization, analysis, and transformation without requiring platform-specific modifications or compiler changes.

Inventive Principle:
Principle #6Universality (Multi-functionality)

Solution Approach 2:

The patent segments the compilation process into distinct stages: source code to intermediary representation, and intermediary representation to bytecode. This segmentation allows independent access and manipulation of the IR format without affecting the compiler implementation, enabling generalizable solutions that don't require modifying the compiler itself.

Inventive Principle:
Principle #1Segmentation

4Adaptability or versatility

If code transformations are performed using existing reflection capabilities, then surface-level modifications are possible, but transformations that preserve originating code's language structures cannot be generated

Engineering Contradiction:
Improvecode transformation capabilityVSAvoidlanguage structure information
Core Design Contradiction:
Adaptability or versatilityVSLoss of information

Solution Approach 1:

The patent transforms code to an intermediary representation before performing transformations, preserving language structure information in the IR format. This preliminary transformation enables subsequent operations to maintain and regenerate originating code's language structures, allowing sophisticated transformations that would be impossible with reflection alone.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The intermediary representation acts as a mediator that preserves language structure information during transformations. By working with the IR format rather than directly with bytecode or source code, the system can perform transformations while maintaining the ability to regenerate code with preserved language structures.

Inventive Principle:
Principle #24Intermediary (Mediator)

Data Source

PatentUS12511107B2Lowering Java try statements in a symbolic description language
Publication Date: 2025.12.30 ORACLE INT CORP
  • US12511107B2 patent drawing
  • US12511107B2 patent drawing
  • US12511107B2 patent drawing

AI summary

Techniques for lowering Java try statements in a symbolic description language are disclosed, including: obtaining a set of Java source code; determining that the set of Java source code includes a try statement; and generating, based on the set of Java source code, a symbolic description language (SDL) model including a lowered SDL representation of the try statement. The lowered SDL representation of the try statement includes: a body including a set of basic SDL blocks; an exception region including (a) a subgraph of the set of basic SDL blocks and (b) an operation covered by the exception region; and a catch entry block, in the set of basic SDL blocks, that is declared as a successor block for when the operation covered by the exception region throws an exception.