Mining inline cache data to order inferred types in dynamic languages

作者:Milojkovic Nevena*; Bera Clement; Ghafari Mohammad; Nierstrasz Oscar
来源:Science of Computer Programming, 2018, 161: 105-121.
DOI:10.1016/j.scico.2017.11.003

摘要

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 101 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.

  • 出版日期2018-9-1
  • 单位INRIA

全文