A Prolog compiler and its extension for OR-parallelism

Carlsson, Mats (1990) A Prolog compiler and its extension for OR-parallelism. [SICS Report]



This report describes algorithms for the compiler component of the Aurora Or-Parallel Prolog system. The compiler translates one Prolog clause at a time into a sequence of abstract instructions. The instruction set is based on the sequential Warren Ab- stract Machine (WAM) with extensions for full Prolog, shallow backtracking, memory management and garbage collection, and for the SRI model of or-parallel execution of Prolog. Most of the described algorithms apply to compilation of sequential Prolog programs. The extensions introduced to support or-parallelism are minor, and concern pruning operators (cut and commit) and compile-time allocation of binding array offsets for permanent variables (generalised environment trimming). Code generation proper is kept separate from register allocation, and uses heuristics for finding a compilation order which minimises the number of register-register copies. After such copies have been coalesced where possible, register allocation is performed in a single pass over the intermediate code. The various compilation phases are described in detail, and the implementation is compared with some other compilers.

Item Type:SICS Report
Additional Information:Original report number R90006.
ID Code:2083
Deposited By:Vicki Carleson
Deposited On:30 Sep 2009
Last Modified:18 Nov 2009 15:59

Repository Staff Only: item control page