|Efficient Dynamic Multimethod Dispatch|
|Date||Friday, June 23, 2000|
|Affiliation||MIT AI Lab|
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|