Carlsson, Mats (1990) A Prolog compiler and its extension for OR-parallelism. [SICS Report]
| Postscript 134Kb | ||
| PDF 327Kb |
Abstract
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

