[Sablevm-developer] [Fwd: Doctoral Oral Defense]
Brought to you by:
egagnon
From: Etienne M. G. <eti...@uq...> - 2002-11-22 05:00:39
|
---------- Forwarded message ---------- Date: Thu, 21 Nov 2002 10:49:52 -0500 From: Diti Anastasopoulos <di...@cs...> Subject: [PROFS] Doctoral Oral Defense McGill University School of Computer Science Doctoral Oral SPEAKER: Etienne Gagnon TITLE: A Portable Research Framework for the Execution of Java Bytecode DATE: Thursday, November 28, 2002 TIME: 2:00 p.m. PLACE: McConnell Engineering Building, Room 103 ABSTRACT: Compilation to bytecode paired with interpretation is often used as a technique to easily build prototypes for new programming languages. Some languages, including Java, push this further and use the bytecode layer to isolate programs from the underlying platform. Current state-of-the-art commercial and research Java virtual machines implement advanced just-in-time and adaptive compilation techniques to deliver high-performance execution of Java bytecode. Yet, experimenting with new features such as adding new bytecodes or redesigning the type system can be a daunting task within these complex systems, when new features invalidate assumptions on which the internal dynamic optimizing compiler depends. On the other hand, simpler existing Java bytecode interpreters, written purely in high-level languages, deliver poor performance. The main motivation behind this thesis was to answer the question: How fast can a portable, easily modifiable Java bytecode interpreter be? In order to address this question, we have designed and developed the SableVM research framework, a portable interpreter-based Java virtual machine written in portable C. In this thesis we introduce innovative techniques for implementing an efficient, yet portable Java bytecode interpreter. These techniques address three areas: instruction dispatch, memory management, and synchronization. Specifically, we show how to implement an inline-threaded engine in the presence of lazy code preparation, without incurring a high synchronization penalty. We then introduce a logical partitioning of runtime system memory that simplifies memory management, and a related sparse interface virtual table design for fast interface-method invocation. We show how to efficiently compute space-efficient garbage collection maps for verifiable bytecode. We also present a bidirectional object layout that simplifies garbage collection. Finally, we introduce an improvement to thin locks, eliminating busy-wait in case of contention. Our experiments within the SableVM framework show that inline threading Java delivers significant performance improvement over switch and direct treading, that sparse interface tables cause no memory loss, and that our map computation algorithm delivers a very small number of distinct garbage collection maps. Our overall performance measurements show that, using our techniques, a portable interpreter can deliver competitive interpretation performance, and even surpass that of a less-portable state-of-the-art interpreter on some benchmarks. COMMITTEE: Prof. L. Hendren (Supervisor) Prof. C. Verbrugge Prof. J. Kienzle Prof. F. Ferrie (External member; ECE) Prof. K. Driesen (Chair) ALL ARE WELCOME ----- End forwarded message ----- |