The RAWAM: Relfun-Adapted WAM Emulation in CMarkus Perling
DFKI, DFKI Technical Memos (TM), Vol. 98-07, 1998.
This work describes the C implementation of the Relfun-Adapted WAM (RAWAM). The RAWAM is an abstract machine tailored to the relational-functional language Relfun, designed and implemented on the basis of the Warren Abstract Machine (WAM). Its goal is to replace an older LISP-implemented Relfun WAM by delivering comparable functionality at higher speed. The RAWAM implementation is introduced by reference to Hassan Aït-Kaci's book "Warren's Abstract Machine: A Tutorial Reconstruction", and the present work will emphasize the differences and extensions w.r.t. this book. These include an assembler, an optimizer, a rudimentary module system, a more flexible realization of the standard WAM memory layout, as well as Relfun-specific extensions for functional and relational builtins, sorts, generalised indexing, and a simple higher-order facility. The implementation of the RAWAM will be described in terms of pseudo code and schematic patterns for the data structures. A relational-functional benchmark revealed a speed-up factor of 20-30 of the RAWAM compared to the older WAM.