1. A method for optimization, by a compiler of an object-oriented language, of computer executable instructions associated with a non-final object that is a call parameter to a virtual procedure at a call site comprising: a) with a computing platform having a central processing unit, devirtualizing the call site of the virtual procedure, wherein the object-oriented language is a statically-typed object-oriented language that permits dynamic class loading, and wherein the devirtualizing includes inlining computer executable instructions associated with a target procedure for the virtual procedure; b) in response to the devirtualizing, inserting computer executable instructions for privatizing the object before the devirtualized call site, wherein privatizing the object comprises causing an evaluation of the object in computer executable code into which a calling procedure is inline before a location of the inlined calling procedure, wherein the privatization ensures that the object preexists an invocation of the inlined procedure, and wherein the privatized object is thread local; c) in response to the privatizing, creating a guard assumption for the devirtualized call site associated with the object, wherein the guard assumption invalidates the devirtualization of the virtual procedure when a definition of a class of the object is extended or when a procedure declared in the class of the object is overridden; and d) applying optimization to computer executable instructions associated with the object within the devirtualized call site.