Compiler Handling Migrated Member Type Conversions

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing compiler technologies face challenges in efficiently accessing and managing multiple versions of migrated members, such as fields and methods, within an updated type, where different versions share the same name but have different types, leading to complexities in type conversions and method invocations.

Innovation Solution

The solution involves identifying migration relationships and conversion functions between different versions of migrated members, allowing for the conversion of values and method arguments between various types, and storing these relationships and functions in class files to facilitate seamless execution.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple versions of migrated members with the same name but different types are supported in an updated type, then the adaptability and versatility of the compiler is improved, but the device complexity increases due to the need to manage version relationships and perform type conversions

Engineering Contradiction:
Improvecompiler compatibility with updated typesVSAvoidcompiler structure complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The compiler separates the management of migrated member versions by creating distinct data structures: one for storing version information and migration relationships, and another for storing conversion functions. This segmentation allows the compiler to handle multiple versions systematically without overwhelming complexity in a single structure.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces conversion functions as intermediary mechanisms that mediate between different versions of migrated members. These conversion functions act as translators that automatically convert values and method arguments from one version's type to another, eliminating the need for complex manual type management logic in the compiler core.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Manufacturing precision

If type conversion and method invocation operations are performed for migrated members, then the manufacturing precision of type safety is improved, but the productivity decreases due to additional conversion steps

Engineering Contradiction:
Improvetype conversion accuracyVSAvoidcode execution speed
Core Design Contradiction:
Manufacturing precisionVSProductivity

Solution Approach 1:

The compiler performs type conversion operations in advance during the compilation phase rather than at runtime. By pre-processing the type conversions and generating appropriate bytecode instructions, the compiler ensures type safety is maintained while minimizing runtime overhead. The conversion logic is embedded in the compiled code structure itself.

Inventive Principle:
Principle #10Preliminary action

3Ease of operation

If migration relationships and conversion functions are stored in class files, then the ease of operation is improved by enabling seamless execution, but the loss of information increases due to additional data storage requirements

Engineering Contradiction:
Improveexecution seamlessnessVSAvoidclass file size
Core Design Contradiction:
Ease of operationVSLoss of information

Solution Approach 1:

The patent stores conversion functions and migration relationships as compact data structures within the class file format. Rather than storing full type definitions or extensive metadata, the system stores concise references and conversion logic that can be efficiently loaded and executed, minimizing the information overhead while maintaining execution seamlessness.

Inventive Principle:
Principle #26Copying

Data Source

PatentUS11733985B2Accessing a migrated member in an updated type
Publication Date: 2023.08.22 ORACLE INT CORP
  • US11733985B2 patent drawing
  • US11733985B2 patent drawing
  • US11733985B2 patent drawing

AI summary

Techniques for accessing a migrated method include: identifying a request to invoke a method defined by a particular type; identifying, in the particular type: an older version of the method that is (a) associated with a method name and (b) configured to return values of a first return type, and a current version of the method that is (a) associated with the method name and (b) configured to return values of a second return type; determining that the first request specifies the first return type; responsive to determining that the first request specifies the first return type: executing the current version of the method to obtain a value of the second return type; applying one or more conversion functions to convert the value of the second return type to a value of the first return type; returning the value of the first return type responsive to the first request.