John Whaley

dblp:29/3598 · DBLP profile ↗
← Back
14ranked-venue papers
8as first author
2since 2021 · last 2022
0000-0003-1441-6982ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 10 · 7 first-authorGraphics, computer vision, multimedia, augmented reality and games · 2 · 2 since 2021Artificial intelligence and machine learning · 1 · 1 since 2021Systems, architecture and hardware · 1 · 1 first-authorDatabases, data management, data science and information retrieval · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
6 papers
Program analysis · 61% Concurrent programming · 20% Compilers and program optimization · 10%
Network and information security
1 paper
Biometric security · 100%
Artificial intelligence
1 paper
Deep learning architectures and training · 100%
Databases, data mining, and information retrieval
1 paper
Query processing and optimization · 100%

Topics — the 15 heaviest of 17, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Biometric security
gait recognition
0.512021
Rotation-Invariant Gait Identification with Quaternion Convolutional Neural Networks (Student Abstract) · AAAI 2021
Machine learning › Deep learning architectures and training
equivariant neural network
0.112021
Rotation-Invariant Gait Identification with Quaternion Convolutional Neural Networks (Student Abstract) · AAAI 2021
Program analysis › static analysis
pointer analysis
0.132005
Context-sensitive program analysis as database queries · PODS 2005
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams · PLDI 2004
Compositional Pointer and Escape Analysis for Java Programs · OOPSLA 1999
Program analysis
static analysis
0.122006
Effective static race detection for Java · PLDI 2006
Automatic extraction of object-oriented component interfaces · ISSTA 2002
Concurrent programming
concurrency bugs
0.112006
Effective static race detection for Java · PLDI 2006
Concurrent programming › concurrency bug detection
data race detection
0.112006
Effective static race detection for Java · PLDI 2006
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis
0.112005
Context-sensitive program analysis as database queries · PODS 2005
Program analysis › static analysis › pointer analysis
context-sensitive pointer analysis
0.012004
Cloning-based context-sensitive pointer alias analysis using binary decision diagrams · PLDI 2004
Runtime systems and virtual machines
dynamic compilation
0.012001
Partial Method Compilation using Dynamic Profile Information · OOPSLA 2001
Compilers and program optimization › dead code elimination
partial dead code elimination
0.012001
Partial Method Compilation using Dynamic Profile Information · OOPSLA 2001
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.012001
Partial Method Compilation using Dynamic Profile Information · OOPSLA 2001
Program analysis › static analysis › interprocedural analysis
compositional analysis
0.011999
Compositional Pointer and Escape Analysis for Java Programs · OOPSLA 1999
Program analysis › static analysis › pointer analysis
escape analysis
0.011999
Compositional Pointer and Escape Analysis for Java Programs · OOPSLA 1999
Requirements engineering and software design
software architecture
0.012002
Automatic extraction of object-oriented component interfaces · ISSTA 2002
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation
0.012001
Partial Method Compilation using Dynamic Profile Information · OOPSLA 2001

Methods — techniques the papers use, named apart from their topics

quaternion convolutional neural network · 1.0SO(3)-equivariant kernel · 1.0datalog · 0.1context numbering · 0.0cloning · 0.0binary decision diagrams · 0.0static analysis · 0.0escape analysis · 0.0dynamic profiling · 0.0points-to escape graphs · 0.0
YearPublicationVenuePosition
2022 Auditing saliency cropping algorithms
abstract
In this paper, we audit saliency cropping algorithms used by Twitter, Google and Apple to investigate issues pertaining to the male-gaze cropping phenomenon as well as race-gender biases that emerge in post-cropping survival ratios of face-images constituting 3 × 1 grid images. In doing so, we present the first formal empirical study which suggests that the worry of a male-gaze-like image cropping phenomenon on Twitter is not at all far-fetched and it does occur with worryingly high prevalence rates in real-world full-body single-female-subject images shot with logo-littered backdrops. We uncover that while all three saliency cropping frameworks considered in this paper do exhibit acute racial and gender biases, Twitter’s saliency cropping framework uniquely elicits high male-gaze cropping prevalence rates. In order to facilitate reproducing the results presented here, we are open-sourcing both the code and the datasets that we curated at shorturl.at/iuzK9. We hope the computer vision community and saliency cropping researchers will build on the results presented here and extend these investigations to similar frameworks deployed in the real world by other companies such as Microsoft and Facebook.
Abeba Birhane, Vinay Uday Prabhu, John Whaley
WACV3
2021 Rotation-Invariant Gait Identification with Quaternion Convolutional Neural Networks (Student Abstract)
abstract
Accelerometric gait identification systems should ideally be robust to changes in device orientation from the enrollment phase to the deployment phase. However, traditional Convolutional Neural Networks (CNNs) used in these systems compensate poorly for such distributional shifts. In this paper, we target this problem by introducing an SO(3)-equivariant quaternion convolutional kernel inside the CNN. Our architecture (Quaternion CNN) significantly outperforms a traditional CNN in a multi-user gait classification setting. Additionally, the kernels learned by QCNN can be visualized as basis-independent trajectory fragments in Euclidean space, a novel mode of feature visualization and extraction.
Vinay Uday Prabhu, Angela Gu, John Whaley
AAAI4
2008 Securing web applications with static and dynamic information flow tracking
abstract
SQL injection and cross-site scripting are two of the most common security vulnerabilities that plague web applications today. These and many others result from having unchecked data input reach security-sensitive operations. This paper describes a language called PQL (Program Query Language) that allows users to declare to specify information flow patterns succinctly and declaratively. We have developed a static context-sensitive, but flow-insensitive information flow tracking analysis that can be used to find all the vulnerabilities in a program. In the event that the analysis generates too many warnings, the result can be used to drive a model-checking system to analyze more precisely. Model checking is also used to automatically generate the input vectors that expose the vulnerability. Any remaining behavior these static analyses have not isolated may be checked dynamically. The results of the static analyses may be used to optimize these dynamic checks.
Monica S. Lam, Michael C. Martin, Benjamin Livshits, John Whaley
PEPM4
2006 Effective static race detection for Java
abstract
We present a novel technique for static race detection in Java programs, comprised of a series of stages that employ a combination of static analyses to successively reduce the pairs of memory accesses potentially involved in a race. We have implemented our technique and applied it to a suite of multi-threaded Java programs. Our experiments show that it is precise, scalable, and useful, reporting tens to hundreds of serious and previously unknown concurrency bugs in large, widely-used programs with few false alarms.
Mayur Naik, Alex Aiken, John Whaley
PLDI3
2005 Reflection Analysis for Java
Benjamin Livshits, John Whaley, Monica S. Lam
APLAS2
2005 Using Datalog with Binary Decision Diagrams for Program Analysis
John Whaley, Dzintars Avots, Michael Carbin, Monica S. Lam
APLAS1
2005 Heuristics for Profile-Driven Method-Level Speculative Parallelization
abstract
Thread level speculation (TLS) is an effective technique for extracting parallelism from sequential code. Method calls provide good templates for the boundaries of speculative threads as they often describe independent tasks. However, selecting the most profitable methods to speculate on is difficult as it involves complicated trade-offs between speculation violations, thread overheads, and resource utilization. This paper presents a first analysis of heuristics for automatic selection of speculative threads across method boundaries using a dynamic or profile-driven compiler. We study the potential of three classes of heuristics that involve increasing amounts of profiling information and runtime complexity. Several of the heuristics allow for speculation to start at internal method points, nested speculation, and speculative thread preemption. Using a set of Java benchmarks, we demonstrate that careful thread selection at method boundaries leads to speedups of 1.4 to 1.8 on practical TLS hardware. Single-pass heuristics that filter out less profitable methods using simple speedup estimates lead to the best average performance by consistently providing a good balance between over- and under-speculation. On the other hand, multi-pass heuristics that perform additional filtering by taking into account interactions between nested method calls often lead to significant under-speculation and perform poorly.
John Whaley, Christoforos E. Kozyrakis
ICPP1
2005 Context-sensitive program analysis as database queries
abstract
Program analysis has been increasingly used in software engineering tasks such as auditing programs for security vulnerabilities and finding errors in general. Such tools often require analyses much more sophisticated than those traditionally used in compiler optimizations. In particular, context-sensitive pointer alias information is a prerequisite for any sound and precise analysis that reasons about uses of heap objects in a program. Context-sensitive analysis is challenging because there are over 1014 contexts in a typical large program, even after recursive cycles are collapsed. Moreover, pointers cannot be resolved in general without analyzing the entire program.
Monica S. Lam, John Whaley, Benjamin Livshits, Michael C. Martin, Dzintars Avots, Michael Carbin, Christopher Unkel
PODS2
2005 Joeq: A virtual machine and compiler infrastructure
John Whaley
Sci. Comput. Program.1
2004 Cloning-based context-sensitive pointer alias analysis using binary decision diagrams
abstract
This paper presents the first scalable context-sensitive, inclusion-based pointer alias analysis for Java programs. Our approach to context sensitivity is to create a clone of a method for every context of interest, and run a context-insensitive algorithm over the expanded call graph to get context-sensitive results. For precision, we generate a clone for every acyclic path through a program's call graph, treating methods in a strongly connected component as a single node. Normally, this formulation is hopelessly intractable as a call graph often has 10 acyclic paths or more. We show that these exponential relations can be computed efficiently using binary decision diagrams (BDDs). Key to the scalability of the technique is a context numbering scheme that exposes the commonalities across contexts. We applied our algorithm to the most popular applications available on Sourceforge, and found that the largest programs, with hundreds of thousands of Java bytecodes, can be analyzed in under 20 minutes. This paper shows that...
John Whaley, Monica S. Lam
PLDI1
2002 Automatic extraction of object-oriented component interfaces
John Whaley, Michael C. Martin, Monica S. Lam
ISSTA1
2002 An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages
John Whaley, Monica S. Lam
SAS1
2001 Partial Method Compilation using Dynamic Profile Information
abstract
The traditional tradeoff when performing dynamic compilation is that of fast compilation time versus fast code performance. Most dynamic compilation systems for Java perform selective compilation and/or optimization at a method granularity. This is the not the optimal granularity level. However, compiling at a sub-method granularity is thought to be too complicated to be practical. This paper describes a straightforward technique for performing compilation and optimizations at a finer, sub-method granularity. We utilize dynamic profile data to determine intra-method code regions that are rarely or never executed, and compile and optimize the code without those regions. If a branch that was predicted to be rare is actually taken at run time, we fall back to the interpreter or dynamically compile another version of the code. By avoiding compiling and optimizing code that is rarely executed, we are able to decrease compile time significantly, with little to no degradation in performance. Futhermore, ignoring rarely-executed code can open up more optimization opportunities on the common paths. We present two optimizations---partial dead code elimination and rare-path-sensitive pointer and escape analysis---that take advantage of rare path information. Using these optimizations, our technique is able to improve performance beyond the compile time improvements
John Whaley
OOPSLA1
1999 Compositional Pointer and Escape Analysis for Java Programs
abstract
This paper presents a combined pointer and escape analysis algorithm for Java programs. The algorithm is based on the abstraction of points-to escape graphs, which characterize how local variables and fields in objects refer to other objects. Each points-to escape graph also contains escape information, which characterizes how objects allocated in one region of the program can escape to be accessed by another region. The algorithm is designed to analyze arbitrary regions of complete or incomplete programs, obtaining complete information for objects that do not escape the analyzed regions.
John Whaley, Martin C. Rinard
OOPSLA1