A Case for Dynamic Reverse-code Generation
13
TL;DR: This article presents a case study of dynamic reverse-code generation, a method to generate reverse code on the fly while running a debugger, and compares the memory usage of various backtracking methods in a simple but nontrivial example, a bounded-buffer program.
read more
Abstract: Backtracking (i.e. reverse execution) helps the user of a debugger to naturally think backwards along the execution path of a program, and thinking backwards makes it easy to locate the origin of a bug. So far backtracking has been implemented mostly by state saving or by checkpointing. These implementations, however, inherently do not scale. As has often been said, the ultimate solution for backtracking is to use reverse code: executing the reverse code restores the previous states of a program. In our earlier work, we presented a method to generate reverse code on the fly while running a debugger. This article presents a case study of dynamic reverse-code generation. We compare the memory usage of various backtracking methods in a simple but nontrivial example, a bounded-buffer program. In the case of non-deterministic programs such as this bounded-buffer program, our dynamic reverse-code generation can outperform the existing backtracking methods in terms of memory efficiency.
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Control-flow analysis of functional programs
TL;DR: In this article, control-flow analysis of functional programs is surveyed by structuring the multitude of formulations and approximations and comparing them.
Refunctionalization at Work
Olivier Danvy,Kevin Millikin +1 more
TL;DR: The left inverse of Reynolds's defunctionalization is presented and its relevance to programming and to programming languages is shown, and it is illustrated with a recognizer for Dyck words and with Dijkstra's shunting-yard algorithm.
On the Equivalence between Small-Step and Big-Step Abstract Machines: A Simple Application of Lightweight Fusion
Olivier Danvy,Kevin Millikin +1 more
TL;DR: It is shown how Ohori and Sasano's recent lightweight fusion by fixed-point promotion provides a simple way to prove the equivalence of the two standard styles of specification of abstract machines: in small-step form, as a state-transition function together with a `driver loop,' and in big- step form as a tail-recursive function that directly maps a given configuration to a final state, if any.
Inter-deriving semantic artifacts for object-oriented programming
Olivier Danvy,Jacob Johannsen +1 more
TL;DR: Three new semantic artifacts for a version of Abadi and Cardelli's calculus with explicit substitutions are presented: a reduction semantics, an environment-based abstract machine, and a natural semantics (i.e., an interpreter) with environments.
26
A Study of Syntactic and Semantic Artifacts and its Application to Lambda Definability, Strong Normalization, and Weak Normalization in the Presence of...
TL;DR: This thesis is dedicated to studying man-made constructs in the lambda calculus by giving a new account of Felleisen and Hieb's syntactic theory of state, and of abstract machines for strong normalization due to Curien, Cregut, Lescanne, and Kluge.
References
Control-flow analysis of functional programs
TL;DR: In this article, control-flow analysis of functional programs is surveyed by structuring the multitude of formulations and approximations and comparing them.
Inter-deriving semantic artifacts for object-oriented programming
Olivier Danvy,Jacob Johannsen +1 more
TL;DR: Three new semantic artifacts for a version of Abadi and Cardelli's calculus with explicit substitutions are presented: a reduction semantics, an environment-based abstract machine, and a natural semantics (i.e., an interpreter) with environments.
26
A Study of Syntactic and Semantic Artifacts and its Application to Lambda Definability, Strong Normalization, and Weak Normalization in the Presence of...
TL;DR: This thesis is dedicated to studying man-made constructs in the lambda calculus by giving a new account of Felleisen and Hieb's syntactic theory of state, and of abstract machines for strong normalization due to Curien, Cregut, Lescanne, and Kluge.
Dynamic Normal Forms and Dynamic Characteristic Polynomial
Gudmund Skovbjerg Frandsen,Piotr Sankowski +1 more
- 07 Jul 2008
TL;DR: The first fully dynamic algorithm for computing the characteristic polynomial of a matrix, based on the Frobenius normal form or the tridiagonal symmetric form, which can be used to dynamically maintain thesingular value decomposition (SVD) of a generic matrix.
13
An Investigation of Abadi and Cardelli's Untyped Calculus of Objects
TL;DR: It is proved that the two calculi are computationally equivalent, and the two abstract machines are strongly bisimilar, which establishes the equivalence of the natural semantics and the reduction semantics of the new calculus.