OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
APL '90 Conference proceedings on APL 90: for the future
Automatic transformation of series expressions into loops
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Optimizing dynamically-dispatched calls with run-time type feedback
PLDI '94 Proceedings of the ACM SIGPLAN 1994 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
A dynamically configurable, multi-language execution platform
Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications
Static and Dynamic Program Compilation by Interpreter Specialization
Higher-Order and Symbolic Computation
Supporting objects in run-time bytecode specialization
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
A portable-approach to dynamic optimization in run-time specialization
New Generation Computing - Partial evaluation and program transformation
Program Generation, Termination, and Binding-Time Analysis
GPCE '02 Proceedings of the 1st ACM SIGPLAN/SIGSOFT conference on Generative Programming and Component Engineering
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Towards Automatic Specialization of Java Programs
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Automatic program specialization for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Opportunities for Online Partial Evaluation
Opportunities for Online Partial Evaluation
LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation
Proceedings of the international symposium on Code generation and optimization: feedback-directed and runtime optimization
Sentinel PRE: Hoisting beyond Exception Dependency with Dynamic Deoptimization
Proceedings of the international symposium on Code generation and optimization
Combining stack caching with dynamic superinstructions
Proceedings of the 2004 workshop on Interpreters, virtual machines and emulators
Escape analysis in the context of dynamic compilation and deoptimization
Proceedings of the 1st ACM/USENIX international conference on Virtual execution environments
A programming language
PyPy's approach to virtual machine construction
Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications
Run-Time Support for Optimizations Based on Escape Analysis
Proceedings of the International Symposium on Code Generation and Optimization
Optimizing indirect branch prediction accuracy in virtual machine interpreters
ACM Transactions on Programming Languages and Systems (TOPLAS)
Redundant boxing elimination by a dynamic compiler for Java
Proceedings of the 5th international symposium on Principles and practice of programming in Java
RPython: a step towards reconciling dynamically and statically typed OO languages
Proceedings of the 2007 symposium on Dynamic languages
Virtual machine showdown: Stack versus registers
ACM Transactions on Architecture and Code Optimization (TACO)
Demystifying magic: high-level low-level programming
Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Array bounds check elimination in the context of deoptimization
Science of Computer Programming
Tracing the meta-level: PyPy's tracing JIT compiler
Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems
Lazy continuations for Java virtual machines
PPPJ '09 Proceedings of the 7th International Conference on Principles and Practice of Programming in Java
Bytecodes meet combinators: invokedynamic on the JVM
Proceedings of the Third Workshop on Virtual Machines and Intermediate Languages
VMKit: a substrate for managed runtime environments
Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Effective inline-threaded interpretation of Java bytecode using preparation sequences
CC'03 Proceedings of the 12th international conference on Compiler construction
Automatic feedback-directed object fusing
ACM Transactions on Architecture and Code Optimization (TACO)
Efficient coroutines for the Java platform
Proceedings of the 8th International Conference on the Principles and Practice of Programming in Java
Efficient interpretation using quickening
Proceedings of the 6th symposium on Dynamic languages
Inline caching meets quickening
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Allocation removal by partial evaluation in a tracing JIT
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
The eval that men do: A large-scale study of the use of eval in javascript applications
Proceedings of the 25th European conference on Object-oriented programming
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
McLAB: enabling programming language, compiler and software engineering research for matlab
Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion
Runtime feedback in a meta-tracing JIT for efficient dynamic languages
Proceedings of the 6th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems
VEE '12 Proceedings of the 8th ACM SIGPLAN/SIGOPS conference on Virtual Execution Environments
Evaluating the design of the R language: objects and functions for data analysis
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Self-optimizing AST interpreters
Proceedings of the 8th symposium on Dynamic languages
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Maxine: An approachable virtual machine for, and in, java
ACM Transactions on Architecture and Code Optimization (TACO) - Special Issue on High-Performance Embedded Architectures and Compilers
The efficient handling of guards in the design of RPython's tracing JIT
Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages
ZipPy on truffle: a fast and simple implementation of python
Proceedings of the 2013 companion publication for conference on Systems, programming, & applications: software for humanity
Optimizing R VM: Allocation Removal and Path Length Reduction via Interpreter-level Specialization
Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization
A fast abstract syntax tree interpreter for R
Proceedings of the 10th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
Hi-index | 0.00 |
Building high-performance virtual machines is a complex and expensive undertaking; many popular languages still have low-performance implementations. We describe a new approach to virtual machine (VM) construction that amortizes much of the effort in initial construction by allowing new languages to be implemented with modest additional effort. The approach relies on abstract syntax tree (AST) interpretation where a node can rewrite itself to a more specialized or more general node, together with an optimizing compiler that exploits the structure of the interpreter. The compiler uses speculative assumptions and deoptimization in order to produce efficient machine code. Our initial experience suggests that high performance is attainable while preserving a modular and layered architecture, and that new high-performance language implementations can be obtained by writing little more than a stylized interpreter.