Efficient Dynamic Multimethod Dispatch
Date Friday, June 23, 2000
Time 2-3pm
Speaker Jonathan Bachrach
Affiliation MIT AI Lab
Abstract Efficient Predicate Dispatching for Dylan

In this talk, I will introduce predicate dispatch, its efficient general implementation, and then discuss results in using these techniques for implementing the Dylan programming language's method dispatch mechanism. Predicate dispatch [ErnstKaplanChambers-ECOOP-98] provides a generalization of other method dispatch techniques through the utilization of arbitrary predicates to control method applicability and logical implication between predicates to determine method overriding. It generalizes previous object-oriented single and multimethod dispatch, ML-style pattern matching, predicate classes, and classifiers. An efficient predicate dispatch implementation technique [ChambersChen-OOPSLA-99] involves reducing general predicate dispatch into multidispatch using a canonicalization process, mapping multidispatch onto a sequence of single dispatches through the construction of a decision DAG, and finally implementing single dispatch in terms of a binary search. Dylan provides a rich set of built-in types and a powerful multimethod dispatch mechanism that present several challenges to the predicate dispatch mechanism and its implementation. I will present the mapping of Dylan types onto predicate types, a dynamic x86 code generator, and several improvements over the general implementation strategy.

This presentation will lay the foundation for an upcoming talk on advanced implementation issues such as redefinition, multiple threads, call-site caches, and dynamic construction.
Location 545 Technology Square (aka "NE43")
Room 8th floor play room of MIT AI Lab
Bio PostDoc at MIT AI Lab