Incremental Global Compilation of Prolog with the Vienna Abstract Machine

Andreas Krall and Thomas Berger
Institut für Computersprachen
Technische Universität Wien
Argentinierstraße 8
A-1040 Wien, Austria
{andi,tb}@complang.tuwien.ac.at

Abstract

The Vienna Abstract Machine (VAM) is an abstract machine which has been designed to eliminate some weaknesses of the Warren Abstract Machine (WAM). Different versions of the VAM are used for different purposes. The VAM_2p is well suited for interpretation, the VAM_1p is aimed for native code generation. The VAM_2p has been modified to the VAM_ai, a concept suited for abstract interpretation. Analysis with the VAM_ai is so fast that it is feasible to support both, global analysis and database updates with assert and retract. We present an incremental compiler based on the VAM_1p and the VAM_ai. A preliminary evaluation of our compiler shows that the generated code competes with the best existing compilers whereas the compile time is comparable to that of simple bytecode translators.