Existing schemes for object layout and dispatch in the presence of mul
tiple inheritance and separate compilation waste space and are slower
than systems with single inheritance. This paper describes the bidirec
tional object layout, a new scheme for object layout that produces sma
ller objects and faster method invocations than existing schemes by au
tomatically optimizing particular uses of multiple inheritance. The bi
directional object layout is used for the programming language Theta,
and is applicable to languages like C++. This paper also demonstrates
how to efficiently implement method dispatch when method signatures ar
e allowed to change in subclasses. Most current statically compiled la
nguages require identical signatures for efficiency.