Sable Home
Main Page
People
Projects
Publications
Papers
Theses
Posters
Reports
Notes
Software
Internal
Links
Sable Publications
Papers
top
CC2020: Improving Database Query Performance with Automatic Fusion
[best paper finalist]
DLS2018: Numerical Computing on the Web: Benchmarking for the Future
DLS2018: HorseIR: Bringing Array Programming Languages Together with Database Query Processing
DLS2016: Efficiently implementing the copy semantics of MATLAB's arrays in JavaScript
SEPS2016: Exhaustive Analysis of Thread-Level Speculation
LCPC2016: Automatic Vectorization for MATLAB
CC2016: Reducing Memory Buffering Overhead in Software Thread-Level Speculation
ARRAY2015: Velociraptor: a compiler toolkit for array-based languages targeting CPUs and GPUs
MODULARITY2015: AspectMatlab++: annotations, types, and aspects for scientists
PACT2014: Velociraptor: an embedded compiler toolkit for numerical programs targeting CPUs and GPUs
WCRE2014: Mc2For: A Tool for Automatically Translating MATLAB to FORTRAN 95
DLS2013: Optimizing MATLAB Feval with Dynamic Techniques
ICPP2013: Mixed Model Universal Software Thread-Level Speculation
PPAM2013: Adaptive Fork-Heuristics for Software Thread-Level Speculation
CC2013: Refactoring MATLAB
VEE2013: A Modular Approach to On-Stack Replacement in LLVM
OOPSLA2012: Taming MATLAB
OOPSLA2011: Kind Analysis for MATLAB
CETUS2011: The Soot Framework for Java Program Analysis: A Retrospective
MSPC2011: There is Nothing Wrong with Out-of-Thin-Air: Compiler Optimization and Memory Models
AOSD2011: MetaLexer: A Modular Lexical Specification Language
DSAL2011: Typing Aspects for MATLAB
CC2011: Staged Static Techniques to Efficiently Implement Array Copy Semantics in a MATLAB JIT Compiler
LCPC2010: McFLAT: A Profile-based Framework for MATLAB Loop Analysis and Transformations
CC2010: Optimizing MATLAB through Just-In-Time Specialization
AOSD10: AspectMatlab: An Aspect-Oriented Scientific Programming Language
AOSD2009: Dependent Advice: A General Approach to Optimizing History-based Aspects
FSE2008: Finding Programming Errors Earlier by Evaluating Runtime Monitors Ahead-of-Time
BCS2008: Object representatives: a uniform abstraction for pointer information
ISSTA2008: Racer: Effective Race Detection Using AspectJ
[award winner]
AOSD2008: Relational Aspects as Tracematches
CC2008: Compiler-guaranteed Safety in Code-copying Virtual Machines
CGO2008: Phase-Based Adaptive Recompilation in a JVM
ECOOP2007: A staged static program analysis to improve the performance of runtime monitoring
PACT2007: Component-Based Lock Allocation
PASTE2007: Dynamic Purity Analysis for Java Programs
CC2007: Obfuscating Java: the most pain for the least gain
NODe2006: Avoiding Infinite Recursion with Stratified Aspects
ICPC2006: Programmer-Friendly Decompiled Java
CC2006: Context-sensitive points-to analysis: is it worth it?
ICPC2006: Dynamic Data Structure Analysis for Java Programs
VEE2006: Relative Factors in Performance Analysis of Java Virtual Machines
LCPC2005: Software Thread Level Speculation for the Java Language and Virtual Machine Environment
PASTE2005: SableSpMT: A Software Framework for Analysing Speculative Multithreading in Java
GAMEON-NA2005: (P)NFG: A Language and Runtime System for Structured Computer Narratives
CC2005: A Study of Type Analysis for Speculative Method Inlining in a JIT Environment
CC2005: Using inter-procedural side-effect information in JIT optimizations
AOSD2005: abc: An extensible AspectJ compiler
CAMP04: Code Layout as a Source of Noise in JVM Performance
VPW2: Return Value Prediction in a Java Virtual Machine
LCPC2004: A Practical MHP Information Analysis for Concurrent Java Programs
PLDI2004: Jedd: A BDD-based Relational Extension of Java
VM2004: Towards Dynamic Interprocedural Analysis in JVMs
CC2004: Integrating the Soot compiler infrastructure into an IDE
eTX2004: Visualizing Program Analysis with the Soot-Eclipse Plugin
OOPSLA2003: Dynamic Metrics for Java
SoftViz2003: EVolve: An Open Extensible Software Visualization Framework
PLDI2003: Points-to Analysis using BDDs
CGO2003: Dynamic Profiling and Trace Cache Generation
CGO2003: Design, Implementation and Evaluation of Adaptive Recompilation with On-Stack Replacement
CC2003: Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences
CC2003: Scaling Java Points-To Analysis using Spark
PASTE02-2: STEP: A Framework for the Efficient Encoding of General Trace Data
PASTE02-1: Combining Static and Dynamic Data in Code Visualization
JGI02: Run-time Evaluation of Opportunities for Object Inlining in Java
ISMM2002: An Adaptive, Region-based Allocator for Java
CC2002: Decompiling Java Bytecode: Problems, Traps and Pitfalls
CC2002: A Comprehensive Approach to Array Bounds Check Elimination for Java
WCRE2001: Decompiling Java Using Staged Encapsulation
CC2001: A Framework for Optimizing Java Using Attributes
JVM01: SableVM: A Research Framework for the Efficient Execution of Java Bytecode
[award winner]
OOPSLA2000: Practical Virtual Method Call Resolution for Java
CASCON2000: A Framework for Optimizing Java Using Attributes
SAS2000: Efficient Inference of Static Types for Java Bytecode
CC2000: Optimizing Java Bytecode using the Soot Framework: Is it Feasible?
CASCON99: Soot - a Java Optimization Framework
TOOLS98: SableCC, an Object-Oriented Compiler Framework
Technical Reports
top
2021-4:
Efficient Web-Based Parallel Sparse Matrix-Vector Multiplication
2021-1:
Accelerating Database Queries for Advanced Data Analytics: A New Approach
2018-4:
Sparse matrices on the web -- Characterizing the performance and optimal format selection of sparse matrix-vector multiplication in JavaScript
2018-3:
HorseIR: Fusing Array Programming and Database Query Processing
2018-2:
WebAssembly and JavaScript Challenge: Numerical program performance using modern browser technologies and devices
2018-1:
A Formalization for Specifying and Implementing Correct Pull-Stream Modules
2015-2:
Asymmetric Partitioning in Thread-Level Speculation
2015-1:
Halophile: Comparing PNacl to Other Web Technologies
2014-3:
McTutorial: A Structured Approach to Teaching MATLAB
2014-2:
Using JavaScript and WebCL for Numerical Computations: A Comparative Study of Native and Web Technologies
2013-5:
Velociraptor: A compiler toolkit for numerical programs targeting CPUs and GPUs
2013-4:
Mc2For: a tool for automatically transforming MATLAB to Fortran 95
2013-3:
MiX10:Compiling MATLAB for High Performance Computing
2013-2:
First steps to compiling MATLAB to X10
2013-1:
A portable and high-performance matrix operations library for CPUs,GPUs and beyond
2012-6-rev1:
Optimizing MATLAB
feval
with Dynamic Techniques
2012-3:
A compiler toolkit for array-based languages targeting CPU/GPU hybrid systems
2012-2:
Taming Matlab (extended version)
2012-1-rev1:
A Modular Approach to On-Stack Replacement in LLVM
2011-4:
Taming Matlab
2011-3:
Abstract Analysis of Method-Level Speculation
2011-2:
Refactoring MATLAB
2011-1:
McSAF: A Static Analysis Framework for MATLAB
2010-7:
The Importance of Being Extendable, A Crucial Extension for AspectMATLAB
2010-6:
McFLAT:A Profile-based Framework for Matlab Loop Analysis and Transformations
2010-5:
Staged Static Techniques to Efficiently Implement Array Copy Semantics in a MATLAB JIT compiler
2010-3:
Adaptive Software Return Value Prediction
2010-2:
Understanding Method Level Speculation
2010-1:
Static Techniques to Efficiently Implement Array Copy Semantics in a MATLAB JIT compiler (Revised, 16 July 2010)
2009-3:
AspectMatlab: An Aspect-Oriented Scientific Programming Language
2009-2:
Understanding Method Level Speculation
2009-1:
Adaptive Software Return Value Prediction
2008-4:
A Stochastic Approach to Instruction Cache Optimization
2008-3:
Memory Abstractions for Speculative Multithreading
2008-2:
Enabling Static Analysis for Partial Java Programs
2008-1:
Transforming Timeline specifications into automata for runtime monitoring (extended version)
2007-9:
Bytecode Testing Framework for SableVM Code-copying Engine
2007-8:
Instance keys: A technique for sharpening whole-program pointer analyses with intraprocedural information
2007-7:
Compiler-guaranteed safety in code-copying VMs
2007-6:
Partial Program Analysis
2007-5:
Arithmetic Coding revealed - A guided tour from theory to praxis
2007-4:
Phase-based adaptive recompilation in a JVM
2007-3:
Component-Based Lock Allocation
2007-2:
Using hardware data to detect repetitive program behavior
2007-1:
libspmt: A Library for Speculative Multithreading
2006-5:
Obfuscating Java: the most pain for the least gain
2006-4:
Metrics for Measuring the Effectiveness of Decompilers and Obfuscators
2006-3:
Improving the Compiling Speed of the AspectBench Compiler
2006-2:
Programmer-friendly Decompiled Java
2006-1:
A Survey of Phase Analysis: Techniques, Evaluation and Applications
2005-4:
Assessing the Impact of Optimization in Java Virtual Machines
2005-3:
Dynamic Shape and Data Structure Analysis in Java
2005-2:
Context-sensitive points-to analysis: is it worth it?
2005-1:
Speculative Multithreading in a Java Virtual Machine
abc-2005-1:
Adding trace matching to AspectJ
abc-2004-3:
Optimising AspectJ
2004-8:
Code Layout as a Source of Noise in JVM Performance
2004-7:
An Algorithmic Approach for Precise Analysis of the pi-Calculus
2004-6:
Compiler Analyses for Improved Return Value Prediction
abc-2004-2:
Building the abc AspectJ compiler with Polyglot and Soot
2004-5:
Using inter-procedural side-effect information in JIT optimizations
2004-4:
A Study of Type Analysis for Speculative Method Inlining in a JIT Environment
abc-2004-1:
abc : An extensible AspectJ compiler
2004-3:
A Practical MHP Information Analysis for Concurrent Java Programs
2004-2:
Measuring the Dynamic Behaviour of AspectJ Programs
2004-1:
Precise, Partially Compositional Analysis of the pi-Calculus
2003-8: This document has been updated. See
2004-2
. [internal: original version
(.ps.gz)
(.pdf)
]
2003-7:
Jedd: A BDD-based relational extension of Java
2003-6:
Problems in Objectively Quantifying Benchmarks using Dynamic Metrics
2003-5:
Towards Dynamic Interprocedural Analysis in JVMs
2003-4:
Integrating the Soot compiler infrastructure into an IDE
2003-3:
Improving the Precision and Correctness of Exception Analysis in Soot
2003-2:
Points-to Inspired Static Analysis For The pi-Calculus
2003-1:
Dynamic Metrics for Java
2002-12:
EVolve: An Open Extensible Software Visualization Framework
2002-11:
Dynamic Metrics for Compiler Developers
2002-10:
Points-To Analysis using BDDs
2002-9:
Scaling Java Points-To Analysis using Spark
2002-8:
Dynamic Profiling and Trace Cache Generation for a Java Virtual Machine
2002-7:
STEP: A Framework for the Efficient Encoding of General Trace Data
2002-6:
EVolve: An Extensible Software Visualization Framework
2002-5:
Fast Local List Scheduling
2002-4:
Combining Static and Dynamic Data in Code Visualization
2002-3:
JIL: an Extensible Intermediate Language
2002-2:
Run-time Evaluation of Opportunities for Object Inlining in Java
2002-1:
An Adaptive, Region-Based Allocator for Java
2001-2:
STOOP: The Sable Toolkit for Object-Oriented Profiling
2001-1:
Decompiling Java Bytecode: Problems, Traps and Pitfalls
2000-4:
A Comprehensive Approach to Array Bounds Check Elimination for Java
2000-3:
SableVM: A Research Framework for the Efficient Execution of Java Bytecode
2000-2:
A Framework for Optimizing Java Using Attributes
2000-1:
Common Subexpression Removal in Soot
1999-4:
Practical Virtual Method Call Resolution for Java
1999-3:
Optimizing Java Bytecode using the Soot Framework: Is it Feasible?
1999-2: This document has been updated. See
1999-4
. [internal: original version
(.ps)
(.ps.gz)
]
1999-1:
Intra-procedural Inference of Static Types for Java Bytecode
1998-7: This document has been updated. See
1999-4
. [internal: original version
(.ps)
(.ps.gz)
]
1998-6:
Of Graphs and Coffi Grounds: Decompiling Java
1998-5: This document has been updated. See
1999-1
. [internal: original version
(.ps)
(.ps.gz)
]
1998-4:
Jimple: Simplifying Java Bytecode for Analyses and Transformations
1998-3:
Measuring ILP in Java Programs
1998-2:
Profiling the Kaffe JIT Compiler
1998-1:
The Jimple Framework
Theses
top
Zhen Cao's Ph.D. Thesis - Efficient Design and Implementation of Software Thread-Level Speculation
Sameer Jagdale's Master's Thesis - VeloCty: A Static Optimising Compiler for MATLAB and NumPy
Xu Li's Master's Thesis - MC2FOR: A MATLAB TO FORTRAN 95 COMPILER
Vineet Kumar's Master's Thesis - MiX10: Compiling MATLAB to X10 for High Performance
Soroush Radpour's Master's Thesis - Understanding and refactoring the MATLAB language
Nurudeen Lameed's Ph.D. Thesis - DYNAMIC COMPILER OPTIMIZATION TECHNIQUES FOR MATLAB
Christopher J. F. Pickett's Ph.D. Thesis - Software Method Level Speculation for Java
Anton Dubrau's Master's Thesis - TAMING MATLAB
Yi Zhang's Master's Thesis - IMPLEMENTATION AND OPTIMIZATION OF THREAD-LOCAL VARIABLES FOR A RACE-FREE JAVA DIALECT
Jesse Doherty's Master's Thesis - MCSAF: AN EXTENSIBLE STATIC ANALYSIS FRAMEWORK FOR THE MATLAB LANGUAGE
Amina Aslam's Master's Thesis - McFLAT : A Profile-based Framework for MATLAB Loop Analysis and Transformations
Toheed Aslam's Master's Thesis - AspectMatlab: An Aspect-Oriented Scientific Programming Language
Maxime Chevalier-Boisvert's Master's Thesis - McVM: an Optimizing Virtual Machine for the MATLAB Programming Language
Eric Bodden's Ph.D. Thesis: Verifying finite-state properties of large-scale programs
Jun Li's Master's Thesis - McFor: a MATLAB-to-Fortran 95 Compiler
Andrew Casey's Master's Thesis - The Metalexer Lexer Specification Language
Gregory B. Prokopski's Ph.D. Thesis: Optimizing Software-Hardware Interplay in Efficient Virtual Machines
Dehua Zhang's Master's Thesis: Aspect Impact Analysis
Richard L. Halpert's Master's Thesis: Static Lock Allocation
Michael R. Batchelder's Master's Thesis: Java bytecode obfuscation
Nomair A. Naeem's Master's Thesis: Programmer-friendly decompiled Java
Ahmer Ahmedani's Master's Thesis: Information flow in a Java intermediate language
Sokhom Pheng's Master's Thesis: Dynamic data structure analysis and visualization of Java programs
Navindra Umanee's Master's Thesis: Shimple: An Investigation of Static Single Assignment Form
Jennifer Lhoták's Master's Thesis: Visualization Tools for Optimizing Compilers
Ondřej Lhoták's Ph.D. Thesis: Program Analysis using Binary Decision Diagrams
Chris Goard's Master's Thesis: Measuring and improving the runtime behaviour of AspectJ programs
Feng Qian's PhD Thesis: Runtime Techniques and Interprocedural Analysis in Java Virtual Machines
Anatole Le's Master's Thesis: Using Inter-Procedural Side-Effect Information in JIT Optimizations
Bruno Dufour's Master's Thesis: Objective Quantification of Program Behaviour Using Dynamic Metrics
Sam Sanjabi's Master's Thesis: Dataflow Analysis of the Pi-Calculus
David Belanger's Master's Thesis: SableJIT: A retargetable just-in-time compiler
Lin Li's Master's Thesis: A practical MHP information computation for concurrent Java programs
Rhodes Brown's Master's Thesis: STEP: A Framework for the Efficient Encoding of General Trace Data
Jerome Miecznikowski's Master's Thesis: New algorithms for a Java decompiler and their implementation in Soot
Ondřej Lhoták's Master's Thesis: Spark: A flexible points-to analysis framework for Java
Etienne Gagnon's PhD Thesis: A Portable Research Framework for the Execution of Java Bytecode
David Eng's Master's Thesis: Combining Static and Dynamic Data in Code Visualization
Feng Qian's Master's Thesis: A Comprehensive Approach to Array Bounds Check Elimination for Java
Raja Vallée-Rai's Master's Thesis: Soot: A Java Bytecode Optimization Framework
Chrislain Razafimahefa's Master's Thesis: A study of side-effect analyses for Java
Vijay Sundaresan's Master's Thesis: Practical Techniques for Virtual Call Resolution in Java
Etienne Gagnon's Master's Thesis: SableCC, an Object Oriented Compiler Framework
Posters
top
McLab: An extensible compiler toolkit for MATLAB and related languages
Software Speculative Multithreading for Java
Adaptive Instruction Cache Optimizations
Visual Conflict Debugger - an Eclipse Plug-in for the Sablecc compiler generator
*J: A Tool for Dynamic Analysis of Java Programs
SPARK: Soot Pointer Analysis Research Kit
STOOP: The Sable Toolkit for Object-Oriented Profiling
Decompile Java Bytecode with Soot!
Soot - a Java Bytecode Optimization and Annotation Framework
Soot - a Java Bytecode Analysis and Transformation Framework
Technical Notes
top
2005-1:
Soot and Java 1.5
2000-1:
Notes on VTA Implementation in Soot
1998-2:
A Brief Description of Kaffe's Internals
1998-1:
Sable API Design Guidelines