Search for method in class record. Instance variables are accessed in the object record. This scheme is essentially interpretive , relying on dynamic searching for instance variables and methods. Instance variables are not so hard. Method code can only access variables in objects of its own class or a subclass.
Compiled methods can then reference variables by offset rather than by name, in the usual way.
Handling message sends is harder, because methods can be overridden by subclasses. But these tables can get very large, and much of their contents will be duplicated between a class and its superclasses. Since the same methods tend to be called repeatedly on the same object classes, this can speed things up a lot. Yes, if we're willing to lose some of Smalltalk's flexibility. In general, a subclass instance may be used wherever a class instance is wanted.