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.|
|Deposited By:||Vicki Carleson|
|Deposited On:||30 Sep 2009|
|Last Modified:||18 Nov 2009 15:59|
Repository Staff Only: item control page