Source-to-Source Compiler for Predictable Memory Management

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current memory management techniques, such as runtime debuggers and garbage collectors, are inefficient and non-portable, leading to memory leaks and segmentation faults, particularly in real-time applications and embedded systems, where they can cause performance issues and power consumption problems.

Innovation Solution

A source-to-source compiler injects deterministic memory management (DMM) code into existing C/C++ source code using smart pointers like the Root Pointer, which automatically identifies and corrects memory misallocations by statically analyzing the Abstract Syntax Tree (AST) to ensure predictable memory deallocation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If runtime memory debuggers (e.g., Rational Purify, Parasoft Insure++, Valgrind) are used to detect memory leaks, then memory misallocations can be identified, but the system performance deteriorates due to the overhead of flagging each memory byte and the process is not portable

Engineering Contradiction:
Improvememory leak detectionVSAvoidsystem performance
Core Design Contradiction:
ReliabilityVSProductivity

Solution Approach 1:

The patent applies preliminary action by performing memory management corrections during the compilation phase rather than at runtime. The source-to-source compiler analyzes the Abstract Syntax Tree (AST) and injects deterministic memory management code before the program executes, eliminating the need for runtime overhead associated with traditional memory debuggers.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent introduces an intermediary component - a source-to-source compiler that acts as a mediator between the original source code and the final executable. This compiler translates C/C++ code into an intermediate representation, injects deterministic memory management code, and generates corrected source code, thereby solving memory issues without requiring runtime debugging tools.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Reliability

If garbage collector functionality is injected into C/C++ programs to improve memory management, then memory leaks are corrected, but real-time application execution is frozen and power consumption increases

Engineering Contradiction:
Improvememory managementVSAvoidreal-time execution speed
Core Design Contradiction:
ReliabilityVSSpeed

Solution Approach 1:

The patent performs memory management setup in advance during compilation rather than executing garbage collection during runtime. By analyzing the AST and injecting deterministic memory management code before execution, the system eliminates the need for runtime garbage collection that would freeze real-time applications.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent replaces the mechanical garbage collection process with a deterministic memory management system. Instead of using tracing algorithms that temporarily freeze the application, the system uses compile-time code injection with smart pointers that automatically manage memory without runtime intervention, thus maintaining real-time execution speed.

Inventive Principle:
Principle #28Mechanics substitution (Replace mechanical system)

3Ease of operation

If reference counting is used to manage memory with smart pointers, then automatic deletion is achieved, but cyclic memory references are never freed

Engineering Contradiction:
Improveautomatic memory deletionVSAvoidcyclic reference detection
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The patent introduces an intermediary source-to-source compiler that analyzes the Abstract Syntax Tree to understand the program's control flow and memory allocation patterns. This compiler injects deterministic memory management code that can detect and break cyclic references, which pure reference counting cannot handle.

Inventive Principle:
Principle #24Intermediary (Mediator)

Solution Approach 2:

The system performs preliminary analysis of the program structure during compilation to identify potential cyclic references. By injecting code that tracks object lifetimes and references deterministically, the system can identify and free cyclic references before they cause memory leaks, unlike runtime reference counting alone.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS11288049B2Source to source compiler, compilation method, and computer-readable medium for predictable memory management
Publication Date: 2022.03.29 10893943 CANADA INC
  • US11288049B2 patent drawing
  • US11288049B2 patent drawing
  • US11288049B2 patent drawing

AI summary

Described are various embodiments of a source-to-source compiler, compilation method, and computer-readable medium for predictable memory management. One embodiment is described as a memory management system operable on input source code for an existing computer program, the system comprising: a computer-readable medium having computer-readable code portions stored thereon to implement, when executed, a deterministic memory manager (DMM), wherein said code portions comprise smart pointer code portions and associated node pointer code portions for implementing a smart pointer that automatically corrects for memory misallocations in target memory allocation source code portions.