Pointer Analysis via Multiple Program Slicing

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Scaling pointer analysis to large programs is challenging due to the complexity and precision requirements, with existing methods struggling to efficiently analyze pervasive pointer usage in imperative languages like C and Java.

Innovation Solution

The method involves decomposing pointer analysis into inter-dependent objectives, computing distinct program slices for each objective, and performing successive refinements to improve precision and efficiency, using a slice engine to extract relevant code segments and a evaluation engine to generate reports on program defects and optimization opportunities.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If pointer analysis is applied to large programs, then analysis coverage is improved, but analysis time and computational complexity increase significantly

Engineering Contradiction:
Improveanalysis coverageVSAvoidanalysis time
Core Design Contradiction:
ReliabilityVSLoss of time

Solution Approach 1:

The patent divides the large program into multiple program slices based on pointer analysis objectives. Each slice represents a subset of the program that can be analyzed independently or semi-independently. This segmentation allows the analysis to be distributed across multiple processing units and reduces the computational burden on any single analysis pass, thereby reducing overall analysis time while maintaining comprehensive coverage through multiple slicing iterations.

Inventive Principle:
Principle #1Segmentation

2Reliability

If pointer analysis is applied to large programs, then analysis coverage is improved, but computational complexity increases significantly

Engineering Contradiction:
Improveanalysis coverageVSAvoidcomputational complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

By segmenting the program into slices based on pointer analysis objectives, the patent reduces the computational complexity of each individual analysis task. The slice engine creates smaller, more manageable program representations that require less computational resources to analyze, while the multiple slicing approach ensures comprehensive coverage is achieved through iterative analysis of different program portions.

Inventive Principle:
Principle #1Segmentation

3Measurement precision

If program slices are computed for each pointer analysis objective, then analysis precision is improved, but device complexity increases

Engineering Contradiction:
Improveanalysis precisionVSAvoiddevice complexity
Core Design Contradiction:
Measurement precisionVSDevice complexity

Solution Approach 1:

The patent implements a dynamic slicing approach where the slice engine adapts program slicing based on specific pointer analysis objectives. Different slices are generated dynamically according to the analysis needs, allowing precise targeting of relevant program portions for each objective. This dynamic adaptation improves precision by focusing analysis resources on pertinent code segments while managing device complexity through objective-driven slice generation.

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11593249B2Scalable points-to analysis via multiple slicing
Publication Date: 2023.02.28 ORACLE INT CORP
  • US11593249B2 patent drawing
  • US11593249B2 patent drawing
  • US11593249B2 patent drawing

AI summary

A method for analyzing software with pointer analysis may include obtaining a software program, and determining a first independent program slice of the software program describing a first code segment of the software program. The method may further include determining, using a first pointer analysis objective, a first result from performing a first pointer analysis on the first independent program slice, and determining, using the first result, a first dependent program slice of the software program. The method may further include determining, using a second pointer analysis objective, a second result from performing a second pointer analysis on the first dependent program slice. The method may further include generating a report, using these results, indicating whether the software program satisfies a predetermined criterion.