Marking External Sibling Caller Routines for Context Restoration

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current computing environments restrict sibling calls to local callees, limiting performance optimizations due to the inability to determine whether a call is local or external, which prevents the generation of necessary context information for external function returns.

Innovation Solution

A method is introduced to mark routines as potential external sibling callers by adding pseudo-instructions or relocation entries, allowing the linker to generate context restoration code for external sibling calls, thereby enabling efficient handling of both local and external sibling calls.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If sibling calls are restricted to local callees only, then the compiler can generate optimized code without additional context management, but the ability to perform sibling calls to external routines is lost, limiting performance optimization opportunities

Engineering Contradiction:
Improvecode performanceVSAvoidsibling call scope
Core Design Contradiction:
ProductivityVSAdaptability or versatility

Solution Approach 1:

The compiler performs preliminary marking of routines as potential external sibling callers during the compilation phase. This advance preparation allows the linker to later generate appropriate context restoration code without requiring runtime determination of call type, thus enabling external sibling calls while maintaining optimization efficiency.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary marker (pseudo-instruction or symbol table entry) that mediates between the compiler and linker. This marker indicates potential external sibling call sites, allowing the linker to generate appropriate prologue/epilogue code without the compiler needing to know the final linkage type, thus bridging the gap between compilation-time optimization and link-time resolution.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If the compiler generates sibling calls to external symbols, then performance optimization is improved, but the lack of knowledge about call type (local vs extern) prevents proper context generation for return from external functions

Engineering Contradiction:
Improvesibling call optimizationVSAvoidcontext information
Core Design Contradiction:
ProductivityVSLoss of information

Solution Approach 1:

The compiler performs preliminary marking of routines as potential external sibling callers during the compilation phase. This advance preparation allows the linker to later generate appropriate context restoration code without requiring runtime determination of call type, thus enabling external sibling calls while maintaining optimization efficiency.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The linker uses feedback from the compiler's markings to determine whether to generate context restoration code. The compiler's preliminary identification of potential external sibling callers provides feedback that enables the linker to make informed decisions about code generation, ensuring proper context management for external returns.

Inventive Principle:
Principle #23Feedback

3Reliability

If marking routines as external sibling callers is implemented, then context restoration for external calls is enabled, but additional pseudo-instructions or symbol table entries must be added, increasing code size and processing overhead

Engineering Contradiction:
Improvecontext restoration accuracyVSAvoidcode structure
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The patent extracts the complexity of context management into separate prologue and epilogue code blocks that are conditionally generated by the linker. The marking mechanism itself is minimal (a simple flag or pseudo-instruction), while the complex context restoration logic is extracted into reusable code templates that the linker assembles based on the markings.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The patent changes the parameter state of marked routines by setting specific bits or flags in symbol table entries or adding pseudo-instructions. This parameter change approach is more efficient than adding substantial code, as it uses existing code structures with modified attributes to convey the external sibling caller information.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentUS10152338B2Marking external sibling caller routines
Publication Date: 2018.12.11 INTERNATIONAL BUSINESS MACHINE CORPORATION
  • US10152338B2 patent drawing
  • US10152338B2 patent drawing
  • US10152338B2 patent drawing

AI summary

Optimizations are provided for sibling calls. A sibling caller is marked to indicate that it may call a sibling routine or that it may call an external sibling routine. Based on the marking, certain processing is performed to facilitate use of sibling calls, particularly when the sibling routine being called is external to the caller.