Abstract
JavaScript is one of the most widely used dynamic languages. The performance of existing JavaScript VMs, however, is lower than that of VMs for static languages. There is a need for a research VM to easily explore new implementation approaches. This paper presents the Tachyon JavaScript VM which was designed to be flexible and to allow experimenting with new approaches for the execution of JavaScript. The Tachyon VM is itself implemented in JavaScript and currently supports a subset of the full language that is sufficient to bootstrap itself. The paper discusses the architecture of the system and in particular the bootstrapping of a self-hosted VM. Preliminary performance results indicate that our VM, with few optimizations, can already execute code faster than a commercial JavaScript interpreter on some benchmarks.
- C. Bolz, A. Cuni, M. Fijalkowski, and A. Rigo. Tracing the meta-level: PyPy's tracing JIT compiler. In Proceedings of the 2009 workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems, pages 18--25. ACM, 2009. Google Scholar
Digital Library
- G. Bracha and D. Ungar. Mirrors: design principles for meta-level facilities of object-oriented programming languages. In Proceedings of the 2004 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 331--344, New York, NY, USA, 2004. ACM. Google Scholar
Digital Library
- C. Chambers, D. Ungar, and E. Lee. An efficient implementation of Self, a dynamically-typed object-oriented language based on prototypes. In Proceedings of the 1989 ACM SIGPLAN conference on Object-oriented programming systems, languages and applications, pages 49--70, New York, NY, USA, 1989. ACM. Google Scholar
Digital Library
- D. Crockford. JavaScript: The Good Parts, chapter 4, page 42. O'Reilly, 2008.Google Scholar
- R. Cytron, J. Ferrante, B. Rosen, M. Wegman, and F. Zadeck. An efficient method of computing static single assignment form. In Proceedings of the 1989 ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 25--35. ACM, 1989. Google Scholar
Digital Library
- A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, et al. Trace-based just-in-time type specialization for dynamic languages. In Proceedings of the 2009 ACM SIGPLAN conference on Programming language design and implementation, pages 465--478. ACM, 2009. Google Scholar
Digital Library
- D. Ingalls, T. Kaehler, J. Maloney, S. Wallace, and A. Kay. Back to the future: the story of Squeak, a practical Smalltalk written in itself. In Proceedings of the 1997 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, volume 32, pages 318--326. ACM, ACM Press, 1997. Google Scholar
Digital Library
- E. C. M. A. International. ECMA-262: ECMAScript Language Specification. ECMA (European Association for Standardizing Information and Communication Systems), Geneva, Switzerland, third edition, Dec. 1999.Google Scholar
- C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. Proceedings of the 2004 IEEE/ACM international symposium on Code generation and optimization, 0:75, 2004. Google Scholar
Digital Library
- F. Logozzo and H. Venter. RATA: Rapid Atomic Type Analysis by Abstract Interpretation - Application to JavaScript Optimization. In Proceedings of the 2010 international conference on Compiler construction, pages 66--83. Springer, 2010. Google Scholar
Digital Library
- F. Loitsch. JavaScript to Scheme compilation. In Proceedings of the 2005 Workshop on Scheme and Functional Programming, pages 101--116, september 2005.Google Scholar
- M. Poletto and V. Sarkar. Linear scan register allocation. ACM Transactions on Programming Languages and Systems, 21:895--913, September 1999. Google Scholar
Digital Library
- P. Ratanaworabhan, B. Livshits, and B. Zorn. JSMeter: Comparing the behavior of JavaScript benchmarks with real Web applications. In Proceedings of the 2010 USENIX conference on Web application development, page 3. USENIX Association, 2010. Google Scholar
Digital Library
- G. Richards, C. Hammer, B. Burg, and J. Vitek. The eval that men do - a large-scale study of the use of eval in JavaScript applications. In European Conference on Object-Oriented Programming. Springer, 2011. Google Scholar
Digital Library
- G. Richards, S. Lebresne, B. Burg, and J. Vitek. An analysis of the dynamic behavior of JavaScript programs. In Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation, pages 1--12. ACM, 2010. Google Scholar
Digital Library
- A. Rigo and S. Pedroni. PyPy's approach to virtual machine construction. In Companion to the 2006 ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, pages 944--953. ACM, 2006. Google Scholar
Digital Library
- R. Sol, C. Guillon, F. M. Q. a. Pereira, and M. A. S. Bigonha. Dynamic elimination of overflow tests in a trace compiler. In Proceedings of the 2011 international conference on Compiler construction, pages 2--21, Berlin, Heidelberg, 2011. Springer-Verlag. Google Scholar
Digital Library
- D. Ungar, A. Spitz, and A. Ausch. Constructing a metacircular virtual machine in an exploratory programming environment. In Companion to the 2005 ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pages 11--20, New York, NY, USA, 2005. ACM. Google Scholar
Digital Library
- M. Wegman and F. Zadeck. Constant propagation with conditional branches. ACM Transactions on Programming Languages and Systems, 13(2):181--210, 1991. Google Scholar
Digital Library
- C. Wimmer and M. Franz. Linear scan register allocation on SSA form. In Proceedings of the 2010 IEEE/ACM international symposium on Code generation and optimization, pages 170--179, New York, NY, USA, 2010. ACM. Google Scholar
Digital Library
Index Terms
Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report
Recommendations
Bootstrapping a self-hosted research virtual machine for JavaScript: an experience report
DLS '11: Proceedings of the 7th symposium on Dynamic languagesJavaScript is one of the most widely used dynamic languages. The performance of existing JavaScript VMs, however, is lower than that of VMs for static languages. There is a need for a research VM to easily explore new implementation approaches. This ...
A feather-weight virtual machine for windows applications
VEE '06: Proceedings of the 2nd international conference on Virtual execution environmentsMany fault-tolerant and intrusion-tolerant systems require the ability to execute unsafe programs in a realistic environment without leaving permanent damages. Virtual machine technology meets this requirement perfectly because it provides an execution ...
Virtual Machine Migration Method between Different Hypervisor Implementations and Its Evaluation
WAINA '12: Proceedings of the 2012 26th International Conference on Advanced Information Networking and Applications WorkshopsVirtualization technologies are an important building block for cloud services. Each service will run on virtual machines (VMs) deployed over different hyper visors in the future. Therefore, a VM migration method between different hyper visor ...







Comments