Typed Intermediate Representation for Multiple Inheritance

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing compilers for object-oriented languages fail to effectively utilize typed intermediate representations due to complexity in handling multiple inheritance and virtual base classes, leading to inefficient and unsuitable type systems that do not support practical compiler implementations.

Innovation Solution

The generation of typed intermediate representations using existential types to represent paths from subclass objects to superclass objects, special expressions for adjusting 'this' pointers, and records that reflect the actual object layout, allowing for type correctness checks and faithful modeling of untyped implementations.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If typed intermediate representations are used for object-oriented languages, then type checking capability and safety proofs are improved, but the complexity of handling multiple inheritance and virtual base classes increases

Engineering Contradiction:
Improvetype checking capabilityVSAvoidcomplexity of handling multiple inheritance
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent segments the object representation into distinct components: virtual base class subobjects, non-virtual base class subobjects, and the most derived object portion. Each segment is typed independently, allowing the type system to handle complex inheritance hierarchies through composition rather than requiring a single complex type structure. This segmentation enables reliable type checking while managing complexity through modular representation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent introduces an intermediary structure (the object model with explicit subobject relationships) that mediates between the source code's multiple inheritance syntax and the typed intermediate representation. This intermediary layer translates complex inheritance relationships into a structured format that can be systematically typed, resolving the contradiction between type safety and handling complexity.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Ease of manufacture

If traditional class and object encodings are used in intermediate language, then implementation simplicity is maintained, but type information is lost and type checking cannot be performed

Engineering Contradiction:
Improveimplementation simplicityVSAvoidtype information loss
Core Design Contradiction:
Ease of manufactureVSLoss of information

Solution Approach 1:

The patent performs preliminary action by establishing a complete type annotation scheme for the intermediate representation before compilation proceeds. Type information is preserved and propagated through all intermediate stages, including detailed type annotations for virtual base class pointers, non-virtual base class pointers, and object substructures. This preliminary type establishment prevents information loss while maintaining implementation feasibility through systematic type propagation.

Inventive Principle:
Principle #10Preliminary action

3Adaptability or versatility

If typed intermediate representations support complex object-oriented features like multiple inheritance with virtual base classes, then language feature coverage is improved, but the type system complexity and runtime overhead increase

Engineering Contradiction:
Improvelanguage feature coverageVSAvoidtype system complexity
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent applies local quality by providing different levels of type detail in different parts of the intermediate representation. Virtual base class subobjects receive explicit path-based type annotations, non-virtual base class subobjects receive straightforward type annotations, and the most derived object receives a composite type annotation. This localized type detail strategy enables comprehensive language feature support while managing overall type system complexity through differentiated treatment of different object components.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS7627863B2Typed intermediate language support for languages with multiple inheritance
Publication Date: 2009.12.01 MICROSOFT TECHNOLOGY LICENSING LLC
  • US7627863B2 patent drawing
  • US7627863B2 patent drawing
  • US7627863B2 patent drawing

AI summary

A typed intermediate representation of source code written in a language that supports multiple inheritance is presented. The typed intermediate representation uses paths to represent objects embedded in other objects. For each class, an exact record type represents layout of complete objects of that class. An approximated record type describes layout of inner objects when the runtime types of the objects are statically unknown. Address arithmetic is represented by special instructions and type-checked to ensure proper pointer adjustment. Types are also given to “this” pointers of methods within classes. These “this” pointer types refer to the paths associated with the object.