Visualization as debugging: Understanding/debugging the Warren Abstract Machine

Author(s):  
Julio García-Martín ◽  
Juan José Moreno-Navarro
2011 ◽  
Vol 13 (1) ◽  
pp. 71-106
Author(s):  
PHUONG-LAN NGUYEN ◽  
BART DEMOEN

AbstractRepresentation sharing can reduce the memory footprint of a program by sharing one representation between duplicate terms. The most common implementation of representation sharing in functional programming systems is known as hash-consing. In the context of Prolog, representation sharing has been given little attention. Some current techniques that deal with representation sharing are reviewed. The new contributions are (1) an easy implementation ofinput sharingforfindall/3; and (2) a description of asharermodule that introduces representation sharing at runtime. Their realization is shown in the context of the Warren Abstract Machine (WAM) as implemented by hProlog. Both can be adapted to any WAM-like Prolog implementation. The sharer works independently of the garbage collector, but it can be made to cooperate with the garbage collector. Benchmark results show that the sharer has a cost comparable to the heap garbage collector, that its effectiveness is highly application-dependent, and that its policy must be tuned to the collector.


1994 ◽  
Vol 18 (2) ◽  
pp. 123-148 ◽  
Author(s):  
Christoph Beierle ◽  
Gregor Meyer

1992 ◽  
Vol 14 (3-4) ◽  
pp. 187-222 ◽  
Author(s):  
Evelina Lamma ◽  
Paola Mello ◽  
Antonio Natali

2011 ◽  
Vol 12 (1-2) ◽  
pp. 189-218 ◽  
Author(s):  
NENG-FA ZHOU

AbstractB-Prolog is a high-performance implementation of the standard Prolog language with several extensions including matching clauses, action rules for event handling, finite-domain constraint solving, arrays and hash tables, declarative loop constructs, and tabling. The B-Prolog system is based on the Tree-Oriented Abstract Machine (TOAM) architecture which differs from the Warren Abstract Machine (WAM) mainly in that (1) arguments are passed old fashionedly through the stack, (2) only one frame is used for each predicate call, and (3) instructions are provided for encoding matching trees. The most recent architecture, called TOAM Jr., departs further from the WAM in that it employs no registers for arguments or temporary variables, and provides variable-size instructions for encoding predicate calls. This paper gives an overview of the language features and a detailed description of the TOAM Jr. architecture, including architectural support for action rules and tabling.


2011 ◽  
Vol 12 (1-2) ◽  
pp. 97-126 ◽  
Author(s):  
PAUL TARAU

AbstractWe describe theBinPrologsystem's compilation technology, runtime system and its extensions supporting first-class Logic Engines while providing a short history of its development, details of some of its newer re-implementations as well as an overview of the most important architectural choices involved in their design. With focus on its differences with conventional Warren Abstract Machine (WAM) implementations, we explain key details ofBinProlog's compilation technique, which replaces the WAM with a simplifiedcontinuation passingruntime system (the “BinWAM”), based on a mapping of full Prolog tobinary logic programs. This is followed by a description of aterm compressiontechnique using a “tag-on-data” representation. Later derivatives, the Java-basedJinni Prologcompiler and the recently developedLean Prologsystem refine theBinPrologarchitecture withfirst-class Logic Engines, made generic through the use of anInteractorinterface. An overview of their applications with focus on the ability to express at source level a wide variety of Prolog built-ins and extensions covers these newer developments.


Sign in / Sign up

Export Citation Format

Share Document