* compile_all_class_methods: Removed.
[cacao.git] / src / vm / linker.c
index 95bab8867dde530c84f65ebf65f8c902ec4bd087..db8ae3f53de067e5b2e0e71978c9107b02869d14 100644 (file)
@@ -32,7 +32,7 @@
             Edwin Steiner
             Christian Thalinger
 
-   $Id: linker.c 3351 2005-10-05 11:53:28Z edwin $
+   $Id: linker.c 3685 2005-11-16 13:28:59Z twisti $
 
 */
 
@@ -447,7 +447,10 @@ static classinfo *link_class_intern(classinfo *c)
        /* has not yet been recorded as an initiating loader for the class */
        /* this is needed so subsequent code can assume that self-refs     */
        /* will always resolve lazily                                      */
-       classcache_store(c->classloader,c,false);
+       /* No need to do it for the bootloader - it is always registered   */
+       /* as initiating loader for the classes it loads.                  */
+       if (c->classloader)
+               classcache_store(c->classloader,c,false);
 
        /* ok, this class is somewhat linked */
 
@@ -843,14 +846,14 @@ static arraydescriptor *link_array(classinfo *c)
        switch (c->name->text[1]) {
        case '[':
                /* c is an array of arrays. */
-               u = utf_new_intern(c->name->text + 1, namelen - 1);
+               u = utf_new(c->name->text + 1, namelen - 1);
                if (!(comp = load_class_from_classloader(u, c->classloader)))
                        return NULL;
                break;
 
        case 'L':
                /* c is an array of objects. */
-               u = utf_new_intern(c->name->text + 2, namelen - 3);
+               u = utf_new(c->name->text + 2, namelen - 3);
                if (!(comp = load_class_from_classloader(u, c->classloader)))
                        return NULL;
                break;
@@ -951,7 +954,7 @@ static arraydescriptor *link_array(classinfo *c)
                        break;
 
                default:
-                       *exceptionptr = new_classnotfoundexception(c->name);
+                       *exceptionptr = new_noclassdeffounderror(c->name);
                        return NULL;
                }