Efficient Dispatch for Dylan
What I am investigating predicate dispatch, its efficient general implementation, and 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 have worked out a mapping of Dylan types onto predicate types, a dynamic x86 code generator, and several improvements over the general implementation strategy. This work will lay the foundation for an upcoming research on advanced implementation issues such as redefinition, multiple threads, call-site caches, and dynamic construction.
Which Turbo Charger for Fun-O Dylan. Talk at MIT AI Lab.
Why Faster Dispatch in the face of incrementality, powerful dynamic types, and separate compilation.
Who Jonathan Bachrach
How Dylan
When 2000 and beyond
Where MIT AI Lab