skip to main content
research-article

MuscalietJS: rethinking layered dynamic web runtimes

Authors Info & Claims
Published:01 March 2014Publication History
Skip Abstract Section

Abstract

Layered JavaScript engines, in which the JavaScript runtime is built on top another managed runtime, provide better extensibility and portability compared to traditional monolithic engines. In this paper, we revisit the design of layered JavaScript engines and propose a layered architecture, called MuscalietJS2, that splits the responsibilities of a JavaScript engine between a high-level, JavaScript-specific component and a low-level, language-agnostic .NET VM. To make up for the performance loss due to layering, we propose a two pronged approach: high-level JavaScript optimizations and exploitation of low-level VM features that produce very efficient code for hot functions. We demonstrate the validity of the MuscalietJS design through a comprehensive evaluation using both the Sunspider benchmarks and a set of web workloads. We demonstrate that our approach outperforms other layered engines such as IronJS and Rhino engines while providing extensibility, adaptability and portability.

References

  1. M. Bebenita, F. Brandner, M. Fahndrich, F. Logozzo, W. Schulte, N. Tillmann, and H. Venter. SPUR: a trace-based JIT compiler for CIL. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications, pages 708--725, Reno/Tahoe, Nevada, USA, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. J. Castanos, D. Edelsohn, K. Ishizaki, P. Nagpurkar, T. Nakatani, T. Ogasawara, and P. Wu. On the benefits and pitfalls of extending a statically typed language jit compiler for dynamic scripting languages. In International Conference on Object Oriented Programming Systems Languages and Applications, pages 195--212, Tucson, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. C. Chambers, J. Hennessy, and M. Linton. The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages. Technical report, Stanford University, Department of Computer Science, 1992.Google ScholarGoogle Scholar
  4. J. Dean, C. Chambers, and D. Grove. Selective specialization for object-oriented languages. In ACM Conference on Programming Language Design and Implementation, pages 93--102, La Jolla, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. Dynamic Language Runtime. http://msdn.microsoft.com/en-us/library/dd233052.aspxGoogle ScholarGoogle Scholar
  6. .NET Framework. http://msdn.microsoft.com/en-us/vstudio/aa496123.aspxGoogle ScholarGoogle Scholar
  7. ECMAScript. http://www.ecmascript.org/Google ScholarGoogle Scholar
  8. A. Gal, B. Eich, M. Shaver, D. Anderson, D. Mandelin, M. R. Haghighat, B. Kaplan, G. Hoare, B. Zbarsky, J. Orendorff, J. Ru- derman, E. W. Smith, R. Reitmaier, M. Bebenita, M. Chang, and\ M. Franz. Trace-based just-in-time type specialization for dynamic languages. In ACM conference on Programming language design and implementation, pages 465--478, Dublin, Ireland, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Google Inc. V8 JavaScript virtual machine. http://code.google.com/p/v8/Google ScholarGoogle Scholar
  10. IronJS. https://github.com/fholm/IronJSGoogle ScholarGoogle Scholar
  11. M. N. Kedlaya, J. Roesch, B. Robatmili, M. Reshadi, and B. Hardekopf. Improved type specialization for dynamic scripting languages. In Dynamic Languages Symposium, pages 37--48, October 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Mono Project. http://www.mono-project.comGoogle ScholarGoogle Scholar
  13. Nashorn JavaScript engine. http://openjdk.java.net/projects/nashornGoogle ScholarGoogle Scholar
  14. Node.js. http://nodejs.orgGoogle ScholarGoogle Scholar
  15. P. Ratanaworabhan, B. Livshits, and B. G. Zorn. Jsmeter: comparing the behavior of javascript benchmarks with real web applications. In USENIX Conference on Web Application Development, WebApps'10, pages 3--3, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Rhino JavaScript engine. https://developer.mozilla.org/en-US/docs/RhinoGoogle ScholarGoogle Scholar
  17. G. Richards, A. Gal, B. Eich, and J. Vitek. Automated construction of javascript benchmarks. In ACM International Conference on Object Oriented Programming Systems Languages and Applications, OOPSLA '11, pages 677--694, Portland, Oregon, USA, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. SpiderMonkey: Mozilla's JavaScript engine. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkeyGoogle ScholarGoogle Scholar
  19. ECMAScript typed arrays. http://www.khronos.org/registry/typedarray/specs/latest/Google ScholarGoogle Scholar
  20. Typescript. http://www.typescriptlang.org/Google ScholarGoogle Scholar
  21. ECMAScript web workers. http://www.whatwg.org/specs/ web-apps/current-work/multipage/workers.html# workers.Google ScholarGoogle Scholar

Index Terms

  1. MuscalietJS: rethinking layered dynamic web runtimes

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in

    Full Access

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader
    About Cookies On This Site

    We use cookies to ensure that we give you the best experience on our website.

    Learn more

    Got it!