Samuel Z. Guyer

Associate Professor, Computer Science
Department of Computer Science
Tufts University

News

July 5, 2014 • The Soundiness Manifesto is accepted for publication in CACM

Teaching

Fall 2014 -- COMP105: Programming Languages

Research Projects

I work in a variety of areas of programming language research, including compilers, optimizations, program analysis, and run-time systems. I am particularly interested in techniques that increase communication and cooperation between the runtime system and the programmer, and among runtime system components. Projects are listed below in roughly chronological order starting with the most current.

• Garbage Collection for Server Applications

We are currently looking at new algorithms for garbage collection specifically targeting server applications where heaps are very large, and the time-space tradeoffs are complex. Publications are in the works!

• Heap Analysis

We are working on several tools and techniques for understanding the structure of program heaps. Elephant Tracks is a highly precise GC tracing tool based on the Merlin Algorithm (see software). HeapViz is a tool for interactive visualization of heap snapshots.

Elephant Tracks in ISMM 2013
Visualizing the Allocation and Death of Objects in ISMM 2013

• Heap Assertions

We developed a family of techniques for checking heap properties at runtime by piggybacking on the garbage collector. They enable very efficient checking of complex properties, such as data structure invariants.

GC Assertions in PLDI 2009
DeAL in OOPSLA 2010
Asynchronous Assertions in OOPSLA 2011

• Dynamic bug diagnosis

The idea behind these projects is to collect extra information (cheaply) at runtime that enable better diagnosis of program failures. Origin tracking encodes the origin of a null reference in its value for use in a null pointer exception. Breadcrumbs encode a full stack trace as single value.

Origin Tracking in OOPSLA 2007
Breadcrumbs in PLDI 2010.

• Compiler-assisted Garbage Collection

We developed two compiler-based techniques for helping improve the efficiency of garbage collection. Colocation is a form of pretenuring that instruments allocation sites with a "colocation object" that determines where the new object should reside. FreeMe is a static analysis for automatic individual object reclamation, which helps reduce the burden on the collector.

Free Me in PLDI 2006
Dynamic Object Colocation in OOPSLA 2004.

• Static analysis for security

The key novelty in this work is a static analysis algorithm that adapts its precision to the client problem. It starts with a fast flow-insensitive, context-insensitive analysis, which it monitors to determine where precision is lost. It then constructs a fine-grained custom precision policy that is used in a second pass of the analysis.

Client-driven Analysis in SCP 2005
my dissertation

• Library-level optimization

My dissertation is about providing compiler support for libraries. Libraries are essentially domain-specific languages without compiler support. Our key contribution is an annotation language for expressing library-specific analyses and optimization.

Broadway Compiler in IEEE
Library-level optimization in LCPC 2000
my dissertation

People

Current students

Nathan Ricci -- PhD student working on garbage collection for large server applications
Diogenes Nunez -- PhD student working on memory management
Raoul Veroy -- PhD student working on heap visualization
Mike Shah -- PhD student working on analysis of concurrent programs
Karl Cronburg -- PhD student working on new kinds of debuggers
Sunjay Bhatia -- Undergrad working on profiling Android applications

Former students

Eddie Aftandilian (PhD) now at Google

Software

Elephant Tracks

We have built a GC tracing tool for Java based on the Merlin algorithm that is implemented using a combination of bytecode rewriting and JVMTI callbacks, so it can be used with any JVM that implements the expected APIs. See the Elephant Tracks web-page for downloads and documentation.

Service

Program chair

OOPSLA SRC 2014ISMM 2014OOPSLA SRC 2013NEPLS 2007

Program committees

VEE 2014PPPJ 2013PLDI 2012OOPSLA 2012CGO 2010VEE 2010VEE 2009VEE 2007PPPJ 2006PACT 2005

Personal





Updated August 2014