---------- 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 -----
|