Related articles |
---|
New Implementation of Virtual Functions in C++ sjmccaug@prairienet.org (1999-11-18) |
Re: New Implementation of Virtual Functions in C++ johnmce@texas.net (1999-11-19) |
Re: New Implementation of Virtual Functions in C++ neeri@iis.ee.ethz.ch (Matthias Neeracher) (1999-11-19) |
Re: New Implementation of Virtual Functions in C++ landauer@apple.com (1999-11-19) |
Re: New Implementation of Virtual Functions in C++ jsgray@acm.org (Jan Gray) (1999-11-23) |
From: | "Jan Gray" <jsgray@acm.org> |
Newsgroups: | comp.compilers |
Date: | 23 Nov 1999 13:08:06 -0500 |
Organization: | Compilers Central |
References: | 99-11-100 99-11-111 |
Keywords: | C++, code, comment |
Doug Landauer wrote in message 99-11-111...
>I wouldn't venture to guess whether these are "more common" than the
>cfront-style vtables yet, since I don't know how MS-VC++ does it :-)
See
http://www.geocities.com/SiliconValley/Foothills/7592/oop/Gray-article.html.
VC++ employs so-called adjuster thunks for MI, and it introduced a
mechanism to avoid them most of the time (unless the particular
derived-class member function overrides a virtual function inherited
from more than one base class.)
There are also "vtordisp adjuster thunks" (virtual base class's
construction displacement adjuster thunks) which ensure correct
behavior, during base class construction/destruction, of calls on
overridden virtual functions of virtually inherited base classes.
VC++ also uses "vcall thunks" to help implement pointers to member
functions. A vcall thunk is a deferred virtual function call. These
help to represent, in a single code pointer, which member function to
call and whether to call it virtually or not, and greatly simplify
each pmf call code site.
Sorry if you don't like the terminology.
Jan Gray
[Nice article. Can you get them to stick it in MSDN? -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.