Integrating data type inheritance into logic programming
Data types and persistence
Garbarge collection for Prolog based on WAM
Communications of the ACM
PLDI '91 Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
Optimising Bytecode Emulation for Prolog
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Representation-based just-in-time specialization and the psyco prototype for python
Proceedings of the 2004 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Science of Computer Programming - Special issue: Static analysis symposium (SAS 2003)
High-level languages for small devices: a case study
CASES '06 Proceedings of the 2006 international conference on Compilers, architecture and synthesis for embedded systems
Faster laziness using dynamic pointer tagging
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Towards description and optimization of abstract machines in an extension of prolog
LOPSTR'06 Proceedings of the 16th international conference on Logic-based program synthesis and transformation
ICLP'05 Proceedings of the 21st international conference on Logic Programming
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Towards a Complete Scheme for Tabled Execution Based on Program Transformation
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
Theory and Practice of Logic Programming - Prolog Systems
An overview of ciao and its design philosophy
Theory and Practice of Logic Programming - Prolog Systems
Lightweight compilation of (c)lp to javascript*
Theory and Practice of Logic Programming
Hi-index | 0.00 |
In this paper we study, in the context of a WAM-based abstract machine for Prolog, how variations in the encoding of type information in tagged words and in their associated basic operations impact performance and memory usage.We use a high-level language to specify encodings and the associated operations. An automatic generator constructs both the abstract machine using this encoding and the associated Prolog-to-bytecode compiler. Annotations in this language make it possible to impose constraints on the final representation of tagged words, such as the effectively addressable space (fixing, for example, the word size of the target processor / architecture), the layout of the tag and value bits inside the tagged word, and how the basic operations are implemented. We evaluate a large number of combinations of the different parameters in two scenarios: a) trying to obtain an optimal general-purpose abstract machine and b) automatically generating a specially-tuned abstract machine for a particular program. We conclude that we are able to automatically generate code featuring all the optimizations present in a hand-written, highly-optimized abstract machine and we can also obtain emulators with larger addressable space and better performance