Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!mips!pacbell.com!ucsd!hub.ucsb.edu!eiffel!bertrand From: bertrand@eiffel.UUCP (Bertrand Meyer) Newsgroups: comp.object Subject: Re: Run-time checks, Compile time Checks, and reliability Keywords: type checking, high reliability, fault tolerance Message-ID: <526@eiffel.UUCP> Date: 14 Apr 91 18:25:04 GMT References: <1991Mar28.161307.6071@cbnewsh.att.com> <27F780E2.1872@tct.com> <1991Apr12.190418.13128@leland.Stanford.EDU> Organization: Interactive Software Engineering, Santa Barbara CA Lines: 37 From <1991Apr12.190418.13128@leland.Stanford.EDU> by craig@leland.Stanford.EDU (Craig Chambers): > I was under the impression that [Interactive's implementation of] > Eiffel uses a slower > implementation of message passing than either in-line caching or indirect > function calls, which (depending on how it's implemented) could get faster > with more precise type information. Another case of misinformation about Eiffel and its implementation. As far as I know, the application of what Mr. Chambers calls ``indirect function calls'' to a language supporting multiple inheritance was invented by the Eiffel implementation team, and was part of the first commercial implementation of Eiffel released at the end of 1986. I remember that several people looked *very* studiously then at the form of our generated code. The implementation uses constant-time dynamic binding, with small overhead over the routine call mechanism in standard languages (static binding) by building the appropriate routine tables and indexing through them. Returning to the original topic of this discussion, it would be impossible to build these tables at compile time without the type information provided by the language. We looked at caching (a variant of which was sketched in Brad Cox's January 1984 IEEE Software article), but realized quickly that although it could make sense for a Smalltalk-like typeless language to decrease the cost of dynamic binding, it was useless for a typed language where type information made it possible to obtain a much more efficient implementation . -- -- Bertrand Meyer Interactive Software Engineering Inc., Santa Barbara bertrand@eiffel.uucp