Quote
non virtual method calls require no vmt lookup, correct?
Yes. And if the class itself has zero virtual functions, then it won't have any Virtual Method Table.
I think you're confusing a pointer to the vtable and the vtable itself. An object will store a pointer to the vtable not the full table. The vtables themselves are generally stored in a read only data segment.
Yep, already edited my post. I should remember to hold off on posting in the morning until after breakfast.
all this seems to imply that all method calls require dereferencing the object's vmt pointer to get the jump address of the actual method to use. i thought non-virtual methods had their jump addresses stored in the objects, to avoid the derferencing overhead.
so all method calls become: gosub vmt_ptr->method->address ?
IE gosub to the address of <method> stored in the vmt pointed to by vmt_ptr ?
for non-virtual, I thought it was more like: gosub instance.method_address[method]
and a stand alone function, by comparison is simply: gosub method_address, correct?