1. A method for sharing dynamically compiled code between different class loaders, comprising: determining loader-dependent and loader-independent parts of a runtime representation of a class, the runtime representation including the bytecodes of the methods of the class; sharing the loader-independent part of the runtime representation of the class between the different class loaders; producing loader reentrant compiled code by performing runtime compilation of the bytecode of the methods of the class, wherein producing loader reentrant compiled code includes, generating native code that implements a class initialization barrier when compiling bytecode that requires a class to be initialized, generating native code that implements a link resolution barrier when compiling bytecode that requires a symbolic link to be resolved, and generating native code that retrieves loader-dependent information from a loader dependent table when compiling bytecode that uses data computed from a resolved symbolic link.