Demand-Driven Type Inference with Subgoal Pruning

Author(s)
Spoon, Steven Alexander
Advisor(s)
Shivers, Olin
Editor(s)
Associated Organization(s)
Organizational Unit
Supplementary to:
Abstract
Highly dynamic languages like Smalltalk do not have much static type information immediately available before the program runs. Static types can still be inferred by analysis tools, but historically, such analysis is only effective on smaller programs of at most a few tens of thousands of lines of code. This dissertation presents a new type inference algorithm, DDP, that is effective on larger programs with hundreds of thousands of lines of code. The approach of the algorithm borrows from the field of knowledge-based systems: it is a demand-driven algorithm that sometimes prunes subgoals. The algorithm is formally described, proven correct, and implemented. Experimental results show that the inferred types are usefully precise. A complete program understanding application, Chuck, has been developed that uses DDP type inferences. This work contributes the DDP algorithm itself, the most thorough semantics of Smalltalk to date, a new general approach for analysis algorithms, and experimental analysis of DDP including determination of useful parameter settings. It also contributes an implementation of DDP, a general analysis framework for Smalltalk, and a complete end-user application that uses DDP.
Sponsor
Date
2005-08-29
Extent
1450596 bytes
Resource Type
Text
Resource Subtype
Dissertation
Rights Statement
Rights URI