The performance of contemporary object oriented languages depends on optimizations such as devirtualization, inlining, and specialization, and these in turn depend on precise call graph analysis. Existing call graph analyses do not take advantage of the information provided by the rich type systems of contemporary languages, in particular generic type arguments. Many existing approaches analyze Java bytecode, in which generic types have been erased. This paper shows that this discarded information is actually very useful as the context in a context-sensitive analysis, where it significantly improves precision and keeps the running time small. Specifically, we propose and evaluate call graph construction algorithms in which the contexts of a...
Call graphs provide a basis for numerous interprocedural analyzers and tools, therefore it is crucia...
Today, every application uses software libraries. Yet, while a lot of research exists w.r.t. analyz...
In the presence of parametric polymorphism, erasure-based languages such as Java and Scala handle pr...
Polymorphism, along with inheritance, is one of the most important features in object-oriented langu...
Whether applications or libraries, today’s software heavily reuses existing code to build more gigan...
Abstract. As Scala gains popularity, there is growing interest in pro-gramming tools for it. Such to...
We present short programs that demonstrate the unsoundness of Java and Scala's current type systems....
Call graphs are fundamental for advanced, interprocedural control flow and data flow analysis tasks....
Virtual method calls are a fundamental feature offered by Java, an object-oriented programming langu...
In object oriented programming, a Call Graph represents the calling relationships between the progra...
Parametric polymorphism in Scala suffers from the usual drawback of erasure on the Java Virtual Mach...
This paper addresses the problem of resolving virtual method and interface calls in Java. The main f...
Generic code increases programmer productivity as it increases code reuse. For example, the LinkedLi...
Points-to analysis addresses a fundamental problem in program analysis: determining statically which...
This paper addresses the problem of resolving virtual method and interface calls in Java. The main f...
Call graphs provide a basis for numerous interprocedural analyzers and tools, therefore it is crucia...
Today, every application uses software libraries. Yet, while a lot of research exists w.r.t. analyz...
In the presence of parametric polymorphism, erasure-based languages such as Java and Scala handle pr...
Polymorphism, along with inheritance, is one of the most important features in object-oriented langu...
Whether applications or libraries, today’s software heavily reuses existing code to build more gigan...
Abstract. As Scala gains popularity, there is growing interest in pro-gramming tools for it. Such to...
We present short programs that demonstrate the unsoundness of Java and Scala's current type systems....
Call graphs are fundamental for advanced, interprocedural control flow and data flow analysis tasks....
Virtual method calls are a fundamental feature offered by Java, an object-oriented programming langu...
In object oriented programming, a Call Graph represents the calling relationships between the progra...
Parametric polymorphism in Scala suffers from the usual drawback of erasure on the Java Virtual Mach...
This paper addresses the problem of resolving virtual method and interface calls in Java. The main f...
Generic code increases programmer productivity as it increases code reuse. For example, the LinkedLi...
Points-to analysis addresses a fundamental problem in program analysis: determining statically which...
This paper addresses the problem of resolving virtual method and interface calls in Java. The main f...
Call graphs provide a basis for numerous interprocedural analyzers and tools, therefore it is crucia...
Today, every application uses software libraries. Yet, while a lot of research exists w.r.t. analyz...
In the presence of parametric polymorphism, erasure-based languages such as Java and Scala handle pr...