Inline Caching - Runtime Method Binding

Runtime Method Binding

The following ECMAScript function receives an object, invokes its toString-method and displays the results on the page the script is embedded in.

function dump(obj) { document.write(obj.toString); }

Since the type of the object is not specified and because of potential method overloading, it is impossible to decide ahead of time, which concrete implementation of the toString-method is going to be invoked. Instead, a dynamic lookup has to be performed at runtime. In language runtimes that do not employ some form of caching, this lookup is performed every time a method is invoked. Because methods may be defined several steps down the inheritance chain, a dynamic lookup can be an expensive operation.

To achieve better performance, many language runtimes employ some form of non-inline caching where the results of a limited number of method lookups are stored in an associative data structure. This can greatly increase performance, provided that the programs executed are "cache friendly" (i.e. there is a limited set of methods that is invoked frequently). This data structure is typically called the first-level method lookup cache.

Read more about this topic:  Inline Caching

Famous quotes containing the words method and/or binding:

    “English! they are barbarians; they don’t believe in the great God.” I told him, “Excuse me, Sir. We do believe in God, and in Jesus Christ too.” “Um,” says he, “and in the Pope?” “No.” “And why?” This was a puzzling question in these circumstances.... I thought I would try a method of my own, and very gravely replied, “Because we are too far off.” A very new argument against the universal infallibility of the Pope.
    James Boswell (1740–1795)

    With a binding like you’ve got, people are gonna want to know what’s in the book.
    Alan Jay Lerner (1918–1986)