BrouHaHa- A portable Smalltalk interpreter
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Garbarge collection for Prolog based on WAM
Communications of the ACM
Warren's abstract machine: a tutorial reconstruction
Warren's abstract machine: a tutorial reconstruction
Optimizing an ANSI C interpreter with superoperators
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Stack caching for interpreters
PLDI '95 Proceedings of the ACM SIGPLAN 1995 conference on Programming language design and implementation
Optimizing direct threaded code by selective inlining
PLDI '98 Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
Communications of the ACM
Analyzing and compressing assembly code
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
Optimising Bytecode Emulation for Prolog
PPDP '99 Proceedings of the International Conference PPDP'99 on Principles and Practice of Declarative Programming
Metastructures versus Attributed Variables in the Context of Extensible Unification
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
From simulation to practice: cache performance study of a Prolog system
Proceedings of the 2002 workshop on Memory system performance
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
Theory and Practice of Logic Programming - Prolog Systems
Sicstus prolog-the first 25 years
Theory and Practice of Logic Programming - Prolog Systems
Theory and Practice of Logic Programming - Prolog Systems
The language features and architecture of b-prolog
Theory and Practice of Logic Programming - Prolog Systems
Prolog performance on larger datasets
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Hi-index | 0.00 |
Wanting to improve execution speed and reduce code size of SICStus Prolog programs, we embarked on a project whose aim was to systematically investigate combination and specialization of WAM instructions. Various variants of the SICStus Prolog virtual machine instruction set were designed, implemented, and their performance was evaluated against standard benchmarks and on big Prolog programs. In this paper, we describe our methodology in finding appropriate candicates for instruction merging and specialization, discuss related trade-offs, present detailed statistics and performance measurements that we gathered, and report on our experiences from our involvement in this feat. In short, our experience is positiv e: the speedup of performing instruction merging and specialization in the context of the SICStus emulator is approximately 10%, while the bytecode size reduction is about 15%.