1. A method for concurrently loading a plurality of new modules while code of a plurality of modules of an original computer program is loaded and executed on a computer system, the method comprising: allocating a module thread local storage (TLS) block for each thread within an initial computer program, wherein the module TLS blocks are large enough to hold all module thread variables that are loaded or to be loaded, and wherein the module TLS blocks are allocated consecutively, with the same layout for each thread; providing constant offsets between module TLS block pointers corresponding to the module TLS blocks and the module thread variables for all of the threads; reserving spare areas between the module TLS blocks for adding new module thread variables; and loading the plurality of new modules by replacing one or more of the plurality of modules of the original computer program with the plurality of new modules, wherein the loading step comprises: determining which of the plurality of modules of the original computer program are to be replaced by the plurality of new modules; initiating a dependency resolution process with respect to the modules to be replaced; for each of the modules to be replaced, copying sections of each of the plurality of new modules to reserved memory sections of the computer system; and for each of the modules to be replaced, relocating all symbols and adding new static data variables and their initialization routines.