Back to overview

Mining Inline Cache Data to Order Inferred Types in Dynamic Languages

Type of publication Peer-reviewed
Publikationsform Original article (peer-reviewed)
Author Milojković Nevena, Béra Clément, Ghafari Mohammad, Nierstrasz Oscar,
Project Agile Software Analysis
Show all

Original article (peer-reviewed)

Journal Science of Computer Programming, Elsevier, Special Issue on Adv. Dynamic Languages
Volume (Issue) 161
Page(s) 105 - 121
Title of proceedings Science of Computer Programming, Elsevier, Special Issue on Adv. Dynamic Languages
DOI 10.1016/j.scico.2017.11.003

Open Access

Type of Open Access Website


The lack of static type information in dynamically-typed languages often poses obstacles for developers. Type inference algorithms can help, but inferring precise type information requires complex algorithms that are often slow. A simple approach that considers only the locally used interface of variables can identify potential classes for variables, but popular interfaces can generate a large number of false positives. We propose an approach called inline-cache type inference (ICTI) to augment the precision of fast and simple type inference algorithms. ICTI uses type information available in the inline caches during multiple software runs, to provide a ranked list of possible classes that most likely represent a variable's type. We evaluate ICTI through a proof-of-concept that we implement in Pharo Smalltalk. The analysis of the top-n+2 inferred types (where n is the number of recorded run-time types for a variable) for 5486 variables from four different software systems shows that ICTI produces promising results for about 75% of the variables. For more than 90% of variables, the correct run-time type is present among first six inferred types. Our ordering shows a twofold improvement when compared with the unordered basic approach, i.e., for a significant number of variables for which the basic approach offered ambiguous results, ICTI was able to promote the correct type to the top of the list.