My main research focus is on developing compiler algorithms, runtime systems, and tools that enable programmers to use a high-level programming style and modern languages, and yet still achieve high performance on uniprocessor and multiprocessor architectures. I am particularly interested in effectively using processor memory hierarchies, and in memory management.

I am very interested in future architectures and their compilers that are a better match to current and future technology limits and constraints. Explicit Dataflow Graph Execution (EDGE) is the approach we are pursuing.

Research Projects

  • DaCapo: Dynamic Cooperative Performance Optimization for Java

  • Jikes RVM: An open-source virtual machine. Most of our tools, garbage collectors, etc. for Java are implemented in Jikes RVM or posted as patches against the research archive.

  • TRIPS: An EDGE architecture

  • PASS: Perpetually Available and Secure Systems (web page tba)
  • Benchmarks

  • DaCapo Java Benchmarks: Open-source real-world client-side Java programs.

  • Bad Apples Suite: Java programs and Null Pointer Exception (NPE) inducing inputs that create 12 NPE errors.
  • Funding

    My research group is currently supported by NSF grants CCF-0811524, CNS-0719966, CCF-0429859, Google, and Intel.

    Dormant Projects

  • Impulse: Building a smarter memory controller.
  • Compiler optimizations for shared-memory parallel architectures
  • Distributed and parallel information retreival
  • ParaScope: An Interactive Parallelization Tool
  • "I have missed more than 9000 shots in my career. I have lost almost 300 games. On 26 occasions I have been entrusted to take the game winning shot... and missed. And I have failed over and over and over again in my life. And that is why I succeed." -- Michael Jordan