Results 1 -
3 of
3
Analyzing the Communication Topology of Concurrent Programs
- In ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based Program Manipulation
, 1995
"... Concurrent languages present complex problems for program analysis. Existing analyses are either imprecise, exponential, or apply only to languages with statically-allocated processes and channels. We present a new polynomial-time analysis using abstract interpretation that addresses the general pro ..."
Abstract
-
Cited by 23 (4 self)
- Add to MetaCart
Concurrent languages present complex problems for program analysis. Existing analyses are either imprecise, exponential, or apply only to languages with statically-allocated processes and channels. We present a new polynomial-time analysis using abstract interpretation that addresses the general problem of determining the communication topology of programs in a subset of Concurrent ML with arbitrary data structures, recursive higher-order functions, dynamic processor allocation, dynamic channel creation, and synchronous message-passing operations transmitand receive. The analysis addresses the following question: Which occurrences of transmit can match which occurrences of receive? The notion of occurrence is formalized as a control path in a small-step semantics, which provides a powerful basis for distinguishing recursive communication topologies. The analysis is relational, in that it relates pairs of processes, and non-uniform, in that it distinguishes between iterations in an i...
Trace-based Program Analysis
, 1996
"... We present trace-based program analysis, a semantics-based framework for statically analyzing and transforming programs with loops, assignments, and nested record structures. Trace-based analyses are based on transfer transition systems, which define the small-step operational semantics of programmi ..."
Abstract
-
Cited by 20 (0 self)
- Add to MetaCart
We present trace-based program analysis, a semantics-based framework for statically analyzing and transforming programs with loops, assignments, and nested record structures. Trace-based analyses are based on transfer transition systems, which define the small-step operational semantics of programming languages. Intuitively, transfer transition systems provide direct support for reasoning about the possible execution traces of a program, instead of just individual program states. The traces in a transfer transition system have many uses, including the finite representation of all possible terminating executions of a loop. Also, traces may be systematically "pieced together", thus allowing the composition of separately analyzed program fragments. The utility of the approach is demonstrated by showing three applications: software pipelining, loop-invariant removal, and data alias detection. y Work performed while on leave at ' Ecole Polytechnique, France. This research was sponsored in ...
Determining Storage Properties of Sequential and Concurrent Programs with Assignment and Structured Data
- In International Static Analysis Symposium
, 1995
"... . Determination of storage properties (e.g., aliasing, def-use chains, liveness, etc.) is one of the primary concerns in the implementation of any programming language. We present a new semantic framework and analysis basedon operational traces that subsumes and improves upon most existing work in t ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
. Determination of storage properties (e.g., aliasing, def-use chains, liveness, etc.) is one of the primary concerns in the implementation of any programming language. We present a new semantic framework and analysis basedon operational traces that subsumes and improves upon most existing work in this area and handles concurrency, higher-order functions, first-class continuations, assignment, and recursive structured data. The analysis determines a storage relation: b ; a a : x:w means that in any evaluation segment starting from program point a, the single unit of data allocated at point b is referenced by subcomponent w of variable x after evaluation proceedsthrough control path a, where b is either a control path representing the point of an allocation that occurred after point a, or a symbolic term x 0 :w 0 representing an allocation before point a and referenced by component w 0 of variable x 0 at a. This relation can relate recursive control structure (including pro...

