Lawrence J. Karnowski and Bradley T. Vander Zanden
Submitted to OOPSLA'98.
Available via anonymous ftp to cs.utk.edu in
The prototype-instance inheritance model has a high storage cost. This storage requirement often forces applications into virtual memory, significantly impairing their interactive performance. We believe this overhead can be reduced sufficiently to avoid using virtual memory. The key observation is that large applications have relatively few prototype objects, each of which is replicated very frequently. Once the design is stabilized, these prototypes do not change. Consequently, they can be compiled into classes. This paper describes a scheme for performing such compilations based on profile information. The scheme provides a way to convert a class-instance object to a prototype-instance object if the profile information is incomplete or inaccurate. It also lays the groundwork for future storage optimizations on the compiled objects. This approach allows the software developer to benefit from prototype-instance inheritance during development and then move the prototype code directly to production.