Write a Blog >>
Tue 10 Nov 2020 01:30 - 01:35 at Virtual room 2 - Analysis 2

Call graphs have many applications in software engineering, including bug-finding, security analysis, and code navigation in IDEs. However, the construction of call graphs requires significant investment in program analysis infrastructure. An increasing number of programming languages compile to the Java Virtual Machine (JVM), and program analysis frameworks such as WALA and SOOT support a broad range of program analysis algorithms by analyzing JVM bytecode. This approach has been shown to work well when applied to bytecode produced from Java code. In this paper, we show that it also works well for diverse other JVM-hosted languages: dynamically-typed functional Scheme, statically-typed object-oriented Scala, and polymorphic functional OCaml. Effectively, we get call graph construction for these languages for free, using existing analysis infrastructure for Java, with only minor challenges to soundness. This, in turn, suggests that bytecode-based analysis could serve as an implementation vehicle for bug-finding, security analysis, and IDE features for these languages. We present qualitative and quantitative analyses of the soundness and precision of call graphs constructed from JVM bytecodes for these languages, and also for Groovy, Clojure, Python, and Ruby. However, we also show that implementation details matter greatly. In particular, the JVM-hosted implementations of Groovy, Clojure, Python, and Ruby produce very unsound call graphs, due to the pervasive use of reflection, invokedynamic instructions, and run-time code generation. Interestingly, the dynamic translation schemes employed by these languages, which result in unsound static call graphs, tend to be correlated with poor performance at run time.

Tue 10 Nov

Displayed time zone: (UTC) Coordinated Universal Time change

01:30 - 02:00
01:30
5m
Talk
A Study of Call Graph Construction for JVM-Hosted Languages
Journal First
Karim Ali University of Alberta, Xiaoni Lai Google, Zhaoyi Luo Microsoft, Ondřej Lhoták University of Waterloo, Julian Dolby IBM Research, USA, Frank Tip Northeastern University
Pre-print Media Attached
01:33
1m
Talk
Change Impact Analysis in Simulink Designs of Embedded Systems
Industry Papers
Bennett Mackenzie McMaster University, Canada, Vera Pantelic McMaster University, Canada, Gordon Marks McMaster University, Canada, Stephen Wynn-Williams McMaster University, Canada, Gehan Selim McMaster University, Canada, Mark Lawford McMaster, Alan Wassyng McMaster University, Canada, Moustapha Diab FCA, USA, Feisel Weslati FCA, USA
DOI
01:35
1m
Talk
Dads: Dynamic Slicing Continuously-Running Distributed Programs with Budget Constraints
Tool Demos
Xiaoqin Fu Washington State University, Haipeng Cai Washington State University, USA, Li Li Monash University, Australia
DOI
01:37
1m
Talk
JShrink: In-Depth Investigation into Debloating Modern Java Applications
Research Papers
Bobby Bruce University of California at Davis, USA, Tianyi Zhang Harvard University, USA, Jaspreet Arora University of California at Los Angeles, USA, Guoqing Harry Xu University of California at Los Angeles, Miryung Kim University of California at Los Angeles, USA
DOI
01:39
1m
Talk
Making Symbolic Execution Promising by Learning Aggressive State-Pruning Strategy
Research Papers
Sooyoung Cha Korea University, South Korea, Hakjoo Oh Korea University
DOI
01:41
19m
Talk
Conversations on Analysis 2
Research Papers
Karim Ali University of Alberta, Pengyu Nie University of Texas at Austin, USA, SooYoung Chae , Xiaoqin Fu Washington State University, Hoda Khalil Carleton University, M: Shin Hwei Tan Southern University of Science and Technology