Virtual function calls in hybrid compiled and interpreted computer programming
environments are carried out efficiently by dual virtual function tables. Each
class object generated is provided with a compiled virtual function table and an
interpreted virtual function table. Each table is symmetrically structured and
contiguous with the class object. Calls from an interpreted function access the
interpreted virtual function table. Entries in that table point to function data
structures which provide for the interpretation of the called function, or for
transfer to execution of a compiled version of the called function. Calls from
a compiled function access the compiled virtual function table. Entries in the
compiled virtual function table point to either executable code representing the
called function, or to transition code for transition to the interpreter to interpret
the called function.