A novel implementation method of delay (1996) [9 citations — 7 self]
Abstract:
The efficiency of delay depends to a large extent on the following four basic operations: delay, wakeup, interrupt, and resume. Traditional implementations of delay in the WAM are slow because three out of the four basic operations need to save or restore the argument registers. In this paper, we present a novel method for implementing delay in a Prolog machine called ATOAM. The main idea is to store delayed calls as frames, called suspension frames, on the control stack rather than as records on the heap. Since delayed calls, after being woken, can be executed directly by using their suspension frames, the four basic operations become very simple. This method had been predicated to cost a large amount of control stack space. However, with tail-recursion elimination, the control stack space requirement can be reduced dramatically. This method has been implemented in the B-Prolog system. For several benchmark programs where delay is used, the experimental results show that B-Prolog is significantly faster and sometimes consumes much less total space than SICStus, a WAM-based Prolog system. 1
Citations
| 408 | Concurrent constraint programming – Saraswat - 1993 |
| 333 | The integration of functions into logic programming: from theory to practice – Hanus - 1994 |
| 109 | Equations and inequations on finite and infinite trees – Colmerauer - 1984 |
| 28 | Negation and Control – Naish - 1986 |
| 16 | Parameter Passing and Control Stack Management in Prolog Implementation Revisited – Zhou - 1996 |
| 14 | Functions as Passive Constraints – At-Kaci, Podelski - 1991 |
| 11 | QD-Janus: A Sequential Implementation of Janus – Debray - 1993 |
| 10 | Quadtrees in concurrent prolog – Edelman, Shapiro - 1987 |
| 5 | ESP reference manual – Chikayama - 1984 |
| 3 | Implementing finite-domain constraint logic programming on top of a Prolog-system with delay-mechanism – Schreye, Pollet, et al. - 1990 |
| 3 | Better Late Than Never, Implementations of Logic Programming Systems – Meier - 1994 |
| 2 | A General Model to Implement DIF – Boizumault - 1986 |
| 1 | F.: CS-prolog: a Generalized Unification-based Constraint Solver – Kawamura, Ohwada, et al. - 1939 |

