EDBT 2026 Demo / reviewers in the wild / expert
Takeshi Ogasawara
dblp:94/3879
· DBLP profile ↗
10ranked-venue papers
6as first author
0since 2021 · last 2012
0000-0002-4021-5239ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 5 first-authorSystems, architecture and hardware · 3 · 1 first-author
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
5 papers |
Runtime systems and virtual machines · 70% Compilers and program optimization · 22% Program analysis · 4% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Memory systems · 100% |
Topics — the 14 heaviest of 15, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.2 | 3 | 2012 | On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languages · OOPSLA 2012 EDO: Exception-directed optimization in java · ACM Trans. Program. Lang. Syst. 2006 Effectiveness of cross-platform optimizations for a java just-in-time compiler · OOPSLA 2003 |
Runtime systems and virtual machines › dynamic compilation
dynamic language compilation |
0.1 | 1 | 2012 | On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languages · OOPSLA 2012 |
Runtime systems and virtual machines › garbage collection
copying garbage collection |
0.1 | 1 | 2009 | NUMA-aware memory manager with dominant-thread-based copying GC · OOPSLA 2009 |
Runtime systems and virtual machines
garbage collection |
0.1 | 1 | 2009 | NUMA-aware memory manager with dominant-thread-based copying GC · OOPSLA 2009 |
Memory systems › memory management
NUMA memory management |
0.1 | 1 | 2009 | NUMA-aware memory manager with dominant-thread-based copying GC · OOPSLA 2009 |
Compilers and program optimization › compiler optimization
exception handling optimization |
0.1 | 2 | 2006 | EDO: Exception-directed optimization in java · ACM Trans. Program. Lang. Syst. 2006 A Study of Exception Handling and Its Dynamic Optimization in Java · OOPSLA 2001 |
Compilers and program optimization
dynamic optimization |
0.1 | 2 | 2006 | A Study of Exception Handling and Its Dynamic Optimization in Java · OOPSLA 2001 EDO: Exception-directed optimization in java · ACM Trans. Program. Lang. Syst. 2006 |
Runtime systems and virtual machines › dynamic language implementation
dynamic language runtime |
0.0 | 1 | 2012 | On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languages · OOPSLA 2012 |
Program analysis
data flow analysis |
0.0 | 1 | 2003 | Effectiveness of cross-platform optimizations for a java just-in-time compiler · OOPSLA 2003 |
Compilers and program optimization › interprocedural optimization
inlining |
0.0 | 1 | 2003 | Effectiveness of cross-platform optimizations for a java just-in-time compiler · OOPSLA 2003 |
Programming languages and type systems › control structures
exception handling |
0.0 | 1 | 2001 | A Study of Exception Handling and Its Dynamic Optimization in Java · OOPSLA 2001 |
Runtime systems and virtual machines › runtime memory management
object allocation |
0.0 | 1 | 2009 | NUMA-aware memory manager with dominant-thread-based copying GC · OOPSLA 2009 |
Compilers and program optimization › dynamic optimization
profile-guided optimization |
0.0 | 1 | 2006 | EDO: Exception-directed optimization in java · ACM Trans. Program. Lang. Syst. 2006 |
Programming languages and type systems › object-oriented programming
java |
0.0 | 1 | 2001 | A Study of Exception Handling and Its Dynamic Optimization in Java · OOPSLA 2001 |
Methods — techniques the papers use, named apart from their topics
dominant-thread-based copying · 0.2NUMA-aware memory management · 0.2specialization · 0.1profiling · 0.1throw elimination · 0.1exception path profiling · 0.1exception path inlining · 0.1partial redundancy elimination · 0.0exception check elimination · 0.0stack cutting · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | On the benefits and pitfalls of extending a statically typed language JIT compiler for dynamic scripting languagesabstractWhenever the need to compile a new dynamically typed language arises, an appealing option is to repurpose an existing statically typed language Just-In-Time (JIT) compiler (repurposed JIT compiler). Existing repurposed JIT compilers (RJIT compilers), however, have not yet delivered the hoped-for performance boosts. The performance of JVM languages, for instance, often lags behind standard interpreter implementations. Even more customized solutions that extend the internals of a JIT compiler for the target language compete poorly with those designed specifically for dynamically typed languages. Our own Fiorano JIT compiler is an example of this problem. As a state-of-the-art, RJIT compiler for Python, the Fiorano JIT compiler outperforms two other RJIT compilers (Unladen Swallow and Jython), but still shows a noticeable performance gap compared to PyPy, today's best performing Python JIT compiler. In this paper, we discuss techniques that have proved effective in the Fiorano JIT compiler as well as limitations of our current implementation. More importantly, this work offers the first in-depth look at benefits and limitations of the repurposed JIT compiler approach. We believe the most common pitfall of existing RJIT compilers is not focusing sufficiently on specialization, an abundant optimization opportunity unique to dynamically typed languages. Unfortunately, the lack of specialization cannot be overcome by applying traditional optimizations. José G. Castaños, David Edelsohn, Kazuaki Ishizaki, Priya Nagpurkar, Toshio Nakatani, Takeshi Ogasawara, Peng Wu 0001 |
OOPSLA | 6 |
| 2012 | Adding dynamically-typed language support to a statically-typed language compiler: performance evaluation, analysis, and tradeoffsabstractApplications written in dynamically typed scripting languages are increasingly popular for Web software development. Even on the server side, programmers are using dynamically typed scripting languages such as Ruby and Python to build complex applications quickly. As the number and complexity of dynamically typed scripting language applications grows, optimizing their performance is becoming important. Some of the best performing compilers and optimizers for dynamically typed scripting languages are developed entirely from scratch and target a specific language. This approach is not scalable, given the variety of dynamically typed scripting languages, and the effort involved in developing and maintaining separate infrastructures for each. In this paper, we evaluate the feasibility of adapting and extending an existing production-quality method-based Just-In-Time (JIT) compiler for a language with dynamic types. Our goal is to identify the challenges and shortcomings with the current infrastructure, and to propose and evaluate runtime techniques and optimizations that can be incorporated into a common optimization infrastructure for static and dynamic languages. We discuss three extensions to the compiler to support dynamically typed languages: (1) simplification of control flow graphs, (2) mapping of memory locations to stack-allocated variables, and (3) reduction of runtime overhead using language semantics. We also propose four new optimizations for Python in (2) and (3). These extensions are effective in reduction of compiler working memory and improvement of runtime performance. We present a detailed performance evaluation of our approach for Python, finding an overall improvement of 1.69x on average (up to 2.74x) over our JIT compiler without any optimization for dynamically typed languages and Python. Kazuaki Ishizaki, Takeshi Ogasawara, José G. Castaños, Priya Nagpurkar, David Edelsohn, Toshio Nakatani |
VEE | 2 |
| 2010 | Scalability limitations when running a Java web server on a chip multiprocessorabstractIn this paper, we consider scalability problems for a Java-based Web server running on a CMP (chip multiprocessor). We found that the performance of the Web server scaled poorly as the number of threads increased, even though the CPUs were not fully utilized. Searching for the causes of this scalability problem, we found that the normal use of the Web server was a poor fit to the object lifetimes a JVM expects. A relatively small fraction of objects that were long-lived but not permanent resulted in frequent scans of all of the live objects. They increased not only the load on the CMP but also the number of Web responses that failed to meet the response time criteria for the server. In addition, we found that the performance of the GC scaled poorly as the number of parallel GC threads increased in the CMP. The long-lived objects tax the CMP, and this is emerging as a general problem for CMPs running Java-based Web servers. To address the problem, we used object pooling for these classes to recycle the instances rather than cycling the memory through the GC. We achieved a 48% improvement in the scalability with this object pooling. We also improved the throughput by 9% by using object pooling for large short-lived objects, even though object pooling is not recommended for use in modern JVMs. We show which data classes affect the GC overheads based on the detailed analysis of object lifetimes. We also show that thread affinity is important for the object pools of these classes. Takeshi Ogasawara |
SYSTOR | 1 |
| 2009 | NUMA-aware memory manager with dominant-thread-based copying GCabstractWe propose a novel online method of identifying the preferred NUMA nodes for objects with negligible overhead during the garbage collection time as well as object allocation time. Since the number of CPUs (or NUMA nodes) is increasing recently, it is critical for the memory manager of the runtime environment of an object-oriented language to exploit the low latency of local memory for high performance. To locate the CPU of a thread that frequently accesses an object, prior research uses the runtime information about memory accesses as sampled by the hardware. However, the overhead of this approach is high for a garbage collector. Takeshi Ogasawara |
OOPSLA | 1 |
| 2008 | Dynamic Thread Count Adaptation for Multiple Services in SMP EnvironmentsabstractWe propose a dynamic mechanism, thread count adaptation, that adjusts the thread counts that are allocated to services for adapting to CPU requirement variations in SMP environments. Our goal is to increase the maximum throughput available on a system that has multiple dynamic content services while meeting different service time criteria for these services in dynamic workloads. Our challenge is to significantly improve response times for dynamic content on a busy well-tuned thread-pool-based system without prioritizing any specific services. Our experiments demonstrate that a prototype using our approach on J2EE middleware quickly (around every 20 ms) adjusted the thread counts for the services and that it improved the average 90th-percentile response times by up to 27% (and 22% on average) for the SPECjAppServer2004 benchmark. Takeshi Ogasawara |
ICWS | 1 |
| 2006 | EDO: Exception-directed optimization in javaabstractOptimizing exception handling is critical for programs that frequently throw exceptions. We observed that there are many such exception-intensive programs written in Java. There are two commonly used exception handling techniques, stack unwinding and stack cutting. Stack unwinding optimizes the normal path by leaving the exception handling path unoptimized, while stack cutting optimizes the exception handling path by adding extra work to the normal path. However, there has been no single exception handling technique to optimize the exception handling path without incurring any overhead to the normal path.We propose a new technique calledException-Directed Optimization(EDO) that optimizes exception-intensive programs without slowing down exception-minimal programs. It is a feedback-directed dynamic optimization consisting of three steps: exception path profiling, exception path inlining, and throw elimination. Exception path profiling attempts to detecthotexception paths. Exception path inlining embeds every hot exception path into the corresponding catching method. Throw elimination replaces a throw with a branch to the corresponding handler. We implemented EDO in IBM's production Just-in-Time compiler and made several experiments. In summary, it improved the performance of exception-intensive programs by up to 18.3% without decreasing the performance of exception-minimal programs for SPECjvm98. We also found an opportunity for performance improvement using EDO in the startup of a Java application server. Takeshi Ogasawara, Hideaki Komatsu, Toshio Nakatani |
ACM Trans. Program. Lang. Syst. | 1 |
| 2004 | Optimizing precision overhead for x86 processorsabstractAbstract It is a major challenge for a Java JIT compiler to perform single‐precision floating‐point operations efficiently for the x86 processors. In previous research, the double‐precision mode is set as the default precision mode when methods are invoked. Sophisticated approaches then use heuristic approaches to optimization by considering the trade‐offs between roundings and mode switches. However, this convention introduces redundant mode switches across method boundaries. Furthermore, methods that include both single‐ and double‐precision operations cannot switch the mode, even if single‐precision operations are dominant. We propose a new approach to these problems. We eliminate redundant mode switches by ignoring the default precision mode and calling a method in the same precision mode as the caller. For methods that include both single‐ and double‐precision methods, we reduce the overhead of rounding by isolating code segments of a given method that should be executed in the single‐precision mode. We implemented our approach in IBM's Just‐in‐Time compiler, and obtained experimental results demonstrating that, in SPECjvm98, it consistently shows the best performance in any configuration of benchmark programs, inline policies, and processor architectures compared with previous research approaches. Copyright © 2004 John Wiley & Sons, Ltd. Takeshi Ogasawara, Hideaki Komatsu, Toshio Nakatani |
Softw. Pract. Exp. | 1 |
| 2003 | Effectiveness of cross-platform optimizations for a java just-in-time compilerabstractThis paper describes the system overview of our Java Just-In-Time (JIT) compiler, which is the basis for the latest production version of IBM Java JIT compiler that supports a diversity of processor architectures including both 32-bit and 64-bit modes, CISC, RISC, and VLIW architectures. In particular, we focus on the design and evaluation of the cross-platform optimizations that are common across different architectures. We studied the effectiveness of each optimization by selectively disabling it in our JIT compiler on three different platforms: IA-32, IA-64, and PowerPC. Our detailed measurements allowed us to rank the optimizations in terms of the greatest performance improvements with the smallest compilation times. The identified set includes method inlining only for tiny methods, exception check eliminations using forward dataflow analysis and partial redundancy elimination, scalar replacement for instance and class fields using dataflow analysis, optimizations for type inclusion checks, and the elimination of merge points in the control flow graphs. These optimizations can achieve 90% of the peak performance for two industry-standard benchmark programs on these platforms with only 34% of the compilation time compared to the case for using all of the optimizations. Kazuaki Ishizaki, Mikio Takeuchi, Kiyokuni Kawachiya, Toshio Suganuma, Osamu Gohda, Tatsushi Inagaki, Akira Koseki, Kazunori Ogata, Motohiro Kawahito, Toshiaki Yasue, Takeshi Ogasawara, Tamiya Onodera, Hideaki Komatsu, Toshio Nakatani |
OOPSLA | 11 |
| 2001 | A Study of Exception Handling and Its Dynamic Optimization in JavaabstractOptimizing exception handling is critical for programs that frequently throw exceptions. We observed that there are many such exception-intensive programs iin various categories of Java programs. There are two commonly used exception handling techniques, stack unwinding optimizes the normal path, while stack cutting optimizes the exception handling path. However, there has been no single exception handling technique to optimize both paths. Takeshi Ogasawara, Hideaki Komatsu, Toshio Nakatani |
OOPSLA | 1 |
| 2000 | Design, implementation, and evaluation of optimizations in a JavaTM Just-In-Time compilerabstractThe Java language incurs a runtime overhead for exception checks and object accesses, which are executed without an interior pointer in order to ensure safety. It also requires type inclusion test, dynamic class loading, and dynamic method calls in order to ensure flexibility. A ‘Just-In-Time’ (JIT) compiler generates native code from Java byte code at runtime. It must improve the runtime performance without compromising the safety and flexibility of the Java language. We designed and implemented effective optimizations for a JIT compiler, such as exception check elimination, common subexpression elimination, simple type inclusion test, method inlining, and devirtualization of dynamic method call. We evaluate the performance benefits of these optimizations based on various statistics collected using SPECjvm98, its candidates, and two JavaSoft applications with byte code sizes ranging from 23 000 to 280 000 bytes. Each optimization contributes to an improvement in the performance of the programs. Copyright © 2000 John Wiley & Sons, Ltd. Kazuaki Ishizaki, Motohiro Kawahito, Toshiaki Yasue, Mikio Takeuchi, Takeshi Ogasawara, Toshio Suganuma, Tamiya Onodera, Hideaki Komatsu, Toshio Nakatani |
Concurr. Pract. Exp. | 5 |