Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Reverse execution in a generalized control regime
Lafora F., Soffa M. Information Systems9 (3-4):183-192,1984.Type:Article
Date Reviewed: Aug 1 1985

Advanced debugging systems sometimes provide some form of backtracking to states earlier in the execution of the program, thus allowing the effect of program statements to be undone. This can be provided either by resetting the system state to that saved by a snapshot taken at some previous moment, or by allowing the reverse execution of individual statements. For single-thread procedural languages, this is moderately straightforward; for those involving any form of more complicated control structures, such as the coroutines provided in SIMULA with their related scheduling statements, the issues are considerably more complicated. The authors consider in detail program statements which can cause changes to the list of events scheduled to occur at future times, such as HOLD, ACTIVATE, PASSIVATE, and WAIT. They establish what information must be stacked since these statements are obeyed normally in the forwards direction in order that the effects of the statements can be undone at some later time. In particular, they show that only three different inverse operations must be provided in order to have the power to undo the effect of any of the different scheduling operations executed in the forwards direction. A clear example is given showing this in practice.

In normal execution, activation records for procedures can be discarded when the procedure terminates. In contrast, a coroutine activation record can be reclaimed by garbage collection only when there are no longer any references to it which might later be used to reactivate it. If, in addition, reversible execution is to be allowed, what is apparently garbage may yet revert to its earlier state of being active. The implications of this for the storage management of activation records are briefly explored. Having elegantly established the logical prerequisites for reverse execution, the paper concludes with a few tantalizingly short comments on their implementation and use in a real debugging system.

Reviewer:  Benedict Heal Review #: CR109380
Bookmark and Share
 
Control Structures (D.3.3 ... )
 
 
Concurrent Programming Structures (D.3.3 ... )
 
 
Coroutines (D.3.3 ... )
 
 
Debugging Aids (D.2.5 ... )
 
 
Processors (D.3.4 )
 
Would you recommend this review?
yes
no
Other reviews under "Control Structures": Date
Exception handling in scientific computation
Hull T.  Tools, methods and languages for scientific and engineering computation (, Paris, France,1751984. Type: Proceedings
Aug 1 1985
A generalized iterative construct and its semantics
Anson E. ACM Transactions on Programming Languages and Systems 9(4): 567-581, 1987. Type: Article
Apr 1 1988
Efficient high-level iteration with accumulators
Cameron R. ACM Transactions on Programming Languages and Systems 11(2): 194-211, 1989. Type: Article
Nov 1 1989
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy