|
John Whaley |
|||||||||||||||||||
|
Tel: (650) 725-3720 |
Email: jwhaley@alum.mit.edu URL: http://www.stanford.edu/~jwhaley Fax: (650) 725-6949 |
||||||||||||||||||
|
Research Interests |
|||||||||||||||||||
|
Program analysis, compilers,
programming languages, software engineering, pointer analysis, virtual
machines, operating systems, binary decision diagrams, program
transformations. |
|||||||||||||||||||
|
Education |
|||||||||||||||||||
Advisor:
Monica S. Lam Thesis:
Context-Sensitive Pointer Analysis using Binary Decision Diagrams
Thesis:
Dynamic Optimization through the Use of Automatic Runtime Specialization
Cumulative
GPA: 4.9 / 5.0 GPA in
major: 5.0 / 5.0 |
|||||||||||||||||||
|
Research Experience |
|||||||||||||||||||
My advisor, three other Ph.D.
students, and I co-founded a company to commercialize a revolutionary computer
management solution invented at Stanford. We completely solve the desktop PC
management problems of malware, virus infections, patching, updates, and
migration. We have a product called the LivePC Engine that allows you to run
LivePCs, which are maintained computing environments that automatically reset
to a pristine copy of the latest version on every reboot. You can install the
LivePC Engine on a portable storage device and take your computer wherever
you go. You can also share LivePCs over the web. We have a directory of
community-maintained LivePCs on our website that you can download and start
using right away. I lead the engineering effort to go from rough idea and
minimal prototype to actual product in about six months. A free community
version of the software is available at www.moka5.com.
I performed research on a wide variety of topics, many of
which appeared in top conferences: ·
Helped
develop Chord, a state-of-the-art static race detection tool for Java that
has found hundreds of serious and previously unknown concurrency bugs in
several large, widely used open source Java programs [PLDI 2006]. -
Developed
bddbddb (BDD-Based Deductive DataBase), an implementation of Datalog that
represents relations as binary decision diagrams. I used bddbddb to implement
context-sensitive pointer analysis, among other analyses [PLDI 2004 Best
Paper, APLAS 2005]. -
Investigated
using machine learning techniques to find effective BDD variable orders for
BDD-based program analysis. -
Developed
and evaluated a set of heuristics for method-level speculative
parallelization [ICPP 2005]. -
Designed and
wrote Joeq, an advanced compiler and virtual machine infrastructure that is
used by numerous researchers throughout the world and as the basis for the
compilers course at Stanford [IVME 2003, SCP 2005]. -
Implemented
a fast inclusion-based context-insensitive pointer analysis for Java [SAS2002]. -
Researched
techniques for automatically extracting component interfaces using static and
dynamic analysis [ISSTA 2002 Distinguished Paper]. -
Developed a
technique for system checkpointing using reflection and program analysis
[Reflection 2001].
I worked on the IBM product JIT
compiler, interacting with groups in
I designed and implemented the
optimizing compiler for the Jalapeño Java virtual machine (now called Jikes
RVM). I also participated in the design of many other components of the
system. My work on Jalapeño culminated into my Masters thesis at MIT. [Java
Grande 1999, IBMSJ 2000]
I conceived, designed, and
implemented an algorithm for real time ray tracing. It runs full screen and
real time on a standard Pentium. Submitted to SIGGRAPH 99.
I worked on a clean-room Java virtual
machine implementation written in C++. I rewrote the JIT compiler and
implemented a real-time profiler, which was featured in an article in Dr.
Dobbs.
I designed and constructed a robotic
dog with an adaptive speech recognition system using only low-cost discrete
components. This dog won the
I worked in the Mobile Solutions
group designing handheld devices. I implemented an extension to Java to
support pen input and playback.
I
worked on a robot that used visual-based intelligence with a natural language
interface. |
|||||||||||||||||||
|
Teaching Experience |
|||||||||||||||||||
|
Teaching Assistant, Stanford, Winter
2004. CS240: Advanced Topics in Operating Systems. Teaching Assistant, Stanford, Winter
2002. CS243: Advanced Compiling Techniques. Teaching Assistant, Stanford, Spring
2001. CS343: Advanced Topics in Compilers. Teaching Assistant, MIT, Fall 1998. 6.035:
Computer Language Engineering. Grader, MIT, 1997-1998. 1.00:
Introduction to Computers and Engineering Problem Solving. Laboratory Assistant, MIT, 1995-1997.
6.001: Structure and Interpretation of Computer Programs. |
|||||||||||||||||||
|
Refereed Publications |
|||||||||||||||||||
|
Naik, Aiken, Whaley. Effective Static Race Detection
for Java. Program Language Design and Implementation (PLDI 2006), Whaley, Avots, Carbin, Lam. Using Datalog with Binary
Decision Diagrams for Program Analysis. Programming Languages and
Systems: Third Asian Symposium (APLAS 2005), Livshits, Whaley, Lam. Reflection Analysis for Java.
Programming Languages and Systems: Third Asian Symposium (APLAS 2005), Whaley, Kozyrakis. Heuristics for Dynamic and
Profile-Driven Method-Level Speculative Parallelization. International
Conference on Parallel Processing (ICPP 2005), Whaley. Joeq: A Virtual Machine and Compiler
Infrastructure. Science of Computer Programming Journal (SCP 2005). This
is an extended version of my IVME paper. Whaley, Lam. Cloning-Based Context-Sensitive Pointer
Alias Analyses Using Binary Decision Diagrams. Programming
Languages Design and Implementation (PLDI 2004), PLDI Best Paper Award. Whaley. Joeq: A Virtual Machine and Compiler
Infrastructure. Workshop on Interpreters, Virtual Machines, and Emulators
(IVME 2003), Whaley, Lam. An Efficient Inclusion-Based Points-To
Analysis for Strictly-Typed Languages. Static Analysis Symposium (SAS
2002), Whaley, Martin, Lam. Automatic Extraction of
Object-Oriented Component Interfaces. International Symposium on Software
Testing and Analysis (ISSTA 2002), ACM SIGSOFT Distinguished Paper Award. Whaley. Partial Method Compilation using Dynamic
Profile Information. Object-Oriented Programming Systems, Languages, and
Applications (OOPSLA 2001), OOPSLA Best Paper Award. Whaley. System Checkpointing Using Reflection and
Program Analysis. Reflection, 3rd International Conference on Metalevel
Architectures and Separation of Crosscutting Concerns, 2001, Whaley. A Portable Sampling-Based Profiler for Java
Virtual Machines. In ACM 2000 Java Grande Conference, Alpern, Attanasio, Barton, Burke, Cheng, Choi, Cocchi,
Fink, Grove, Hind, Hummel, Lieber, Litvinov, Ngo, Mergen, Sarkar, Serrano,
Shepherd, Smith, Sreedhar, Srinivasan, Whaley. The Jalapeno Virtual
Machine. IBM Systems Journal, Java Performance Issue, Vol. 39, No. 1,
2000. Burke, Choi, Fink, Grove, Hind, Sarkar, Serrano, Sreedhar,
Srinivasan, Whaley. The Jalapeno Dynamic Optimizing Compiler for Java.
ACM 1999 Java Grande Conference. Whaley, Rinard. Compositional Pointer and Escape
Analysis for Java Programs. Object-Oriented Programming Systems,
Languages, and Applications (OOPSLA 1999), #93 on Top 10,000 most cited CS articles of 1999. |
|||||||||||||||||||
|
Other Publications |
|
Whaley. Context-Sensitive Pointer Analysis using Binary
Decision Diagrams. Ph.D. thesis, Stanford University, March 2007. Carbin, Whaley, Lam. Finding Effective Variable
Orderings for BDD-Based Program Analysis. Submitted for publication. Lam, Whaley, Livshits, Martin, Avots, Carbin, Unkel. Context-Sensitive
Program Analysis as Database Queries. Principles of Database Systems
(PODS 2005). Invited paper. Whaley. Dynamic Optimization through the use of
Automatic Runtime Specialization. M.Eng. thesis, Massachusetts Institute
of Technology, May 1999. Whaley, Barton. A real-time performance profiler for
Java. Dr. Dobbs Journal, March 1998. |
|
Invited Talks and Presentations |
|
-
APLAS, -
ICPP, -
-
Intel
Research, -
PLDI, -
-
-
Stanford
Computer Forum, May 2004. Program Analysis with bddbddb. -
Sun
Microsystems, -
IVME
Workshop, -
-
-
SAS, -
ISSTA, -
-
Stanford -
Stanford -
-
OOPSLA, -
Reflection, -
-
-
Stanford University
CS343, May 2001. What's so hard about pointers? -
ACM Java
Grande, San Francisco, CA, June 2000. A Portable Sampling-Based Profiler for
Java Virtual Machines. -
OOPSLA,
Denver, CO, November 1999. Compositional Pointer and Escape Analysis for Java
Programs. -
University
of Tokyo. July 2000. Effectively gathering and using dynamic profile data. -
Tokyo Institute
of Technology. July 2000. Analysis and Optimizations of Multithreaded Programs. -
IBM Japan,
1999. December 1999. Pointer and Escape Analysis for Java. -
Tokyo
Institute of Technology. December 1999. Automatic Dynamic Specialization. -
University
of Tokyo. September 1999. Compositional Pointer and Escape Analysis for Java
Programs. -
Silicon
Graphics. December 1998. The Makings of a Seamless Java Virtual Machine. -
MIT 6.892,
December 1998. Escape Analysis in Java. -
MIT 6.892,
November 1998. Jalapeño: The Makings of a Seamless
Java Virtual Machine. -
IBM T.J. Watson
Research Center, March 1998. Porting IBvM to x86. -
IBM T.J. Watson
Research Center, August 1997. Single-Pass Java Bytecode to IR. |
|
Professional Activities |
|
Programming Language Design and
Implementation (PLDI) Program Committee, 2008. Parallel and Distributed Embedded
Systems (PDES) Program Committee, 2005. Compiler Optimization Meets Compiler
Verification (COCV) Program Committee, 2002. Reviewer for POPL, PLDI, OOPSLA,
ECOOP, TOPLAS, FSE, CGO. |
|
Open Source Projects |
|
Joeq virtual machine and compiler
infrastructure. http://joeq.sourceforge.net JavaBDD binary decision diagram
library. http://javabdd.sourceforge.net bddbddb: BDD-Based Deductive DataBase.
http://bddbddb.sourceforge.net Eclipse KeepResident plugin. http://suif.stanford.edu/pub/keepresident BuDDy BDD package. http://buddy.sourceforge.net |
|
Honors and Awards |
|
Intel Graduate Fellowship Award,
2004-2005. Stanford Engineering Fellowship,
2003-2004. NSF Graduate Student Fellowship
Award, 1999-2003. Paper Awards at PLDI 2004, ISSTA
2002, OOPSLA 2001. Bell Northern Outstanding
Undergraduate Research Prize, 1997. Faculty Letters for outstanding
performance in MIT courses: Structure
and Interpretation of Computer Programs (6.001), Computation Structures
(6.004), Artificial Intelligence (6.034), Compiler Design (6.035), Software Engineering
Lab (6.170) USA Computer Olympiad ‘93: Went to national finals as one
of the Top 15 programmers in US. |
|
Languages |
|
English (native speaker), Japanese
(fluent speaker) |
|
Citizenship |
||||
|
US Citizen |
||||
|
References |
||||
|