11. A computer-readable storage medium having stored thereon a typed intermediate representation of a computer program, the computer program written in a language which allows multiple inheritance and virtual inheritance, the typed intermediate representation comprising: an exact record type which comprises a substantially exact representation of a runtime object of at least one of one or more classes defined in a source code representation of the computer program, including at least two distinct inheritance paths from the at least one of the one or more classes to a superclass, the superclass inherited at least twice; an approximated record type comprising substantially all inheritance paths from at least one non-virtually inherited superclasses of the at least one of the one or more classes to all superclasses inherited by the at least one non-virtually inherited superclass; a layout of the at least one of the one or more classes, wherein the layout maps to a runtime representation of an object of the at least one of the one or more classes; wherein the typed intermediate representation comprises a single path representing the superclass inherited at least twice.
11. A computer-readable storage medium having stored thereon a typed intermediate representation of a computer program, the computer program written in a language which allows multiple inheritance and virtual inheritance, the typed intermediate representation comprising: an exact record type which comprises a substantially exact representation of a runtime object of at least one of one or more classes defined in a source code representation of the computer program, including at least two distinct inheritance paths from the at least one of the one or more classes to a superclass, the superclass inherited at least twice; an approximated record type comprising substantially all inheritance paths from at least one non-virtually inherited superclasses of the at least one of the one or more classes to all superclasses inherited by the at least one non-virtually inherited superclass; a layout of the at least one of the one or more classes, wherein the layout maps to a runtime representation of an object of the at least one of the one or more classes; wherein the typed intermediate representation comprises a single path representing the superclass inherited at least twice. 13. The computer-readable medium of claim 11 , wherein the inheritance paths from the at least one of the one or more classes to a superclass corresponds to a displacement between the runtime object of the at least one of the one or more classes and a runtime object of the superclass.