* classcache_lookup_name, classcache_new_name: Speed up lookup in external
[cacao.git] / src / vm / utf8.c
index 0e5cc665b595f62d026b0849359be6ba4143416f..88a91dcde5246a19a17bf5ad369d348a1954e7ec 100644 (file)
@@ -30,7 +30,7 @@
             Andreas Krall
             Christian Thalinger
 
-   $Id: utf8.c 2158 2005-03-30 20:06:37Z twisti $
+   $Id: utf8.c 3262 2005-09-21 20:02:49Z twisti $
 
 */
 
@@ -41,6 +41,7 @@
 #include "vm/exceptions.h"
 #include "vm/options.h"
 #include "vm/statistics.h"
+#include "vm/stringlocal.h"
 #include "vm/tables.h"
 #include "vm/utf8.h"
 
@@ -58,14 +59,16 @@ utf *utf_java_lang_Cloneable;
 utf *utf_java_lang_SecurityManager;
 utf *utf_java_lang_String;
 utf *utf_java_lang_System;
+utf *utf_java_lang_ThreadGroup;
 utf *utf_java_io_Serializable;
 
 utf *utf_java_lang_Throwable;
 utf *utf_java_lang_VMThrowable;
-utf *utf_java_lang_Exception;
 utf *utf_java_lang_Error;
-utf *utf_java_lang_OutOfMemoryError;
+utf *utf_java_lang_Exception;
 utf *utf_java_lang_NoClassDefFoundError;
+utf *utf_java_lang_OutOfMemoryError;
+utf *utf_java_lang_ClassNotFoundException;
 
 utf* utf_java_lang_Void;
 utf* utf_java_lang_Boolean;
@@ -77,6 +80,10 @@ utf* utf_java_lang_Long;
 utf* utf_java_lang_Float;
 utf* utf_java_lang_Double;
 
+utf *utf_java_lang_StackTraceElement;
+utf *utf_java_lang_reflect_Constructor;
+utf *utf_java_lang_reflect_Field;
+utf *utf_java_lang_reflect_Method;
 utf *utf_java_util_Vector;
 
 utf *utf_InnerClasses;                  /* InnerClasses                       */
@@ -88,11 +95,16 @@ utf *utf_SourceFile;                    /* SourceFile                         */
 
 utf *utf_init;                          /* <init>                             */
 utf *utf_clinit;                        /* <clinit>                           */
+utf *utf_clone;                         /* clone                              */
 utf *utf_finalize;                      /* finalize                           */
+utf *utf_run;                           /* run                                */
+
+utf *utf_add;                           /* add                                */
 
-utf *utf_printStackTrace;
 utf *utf_fillInStackTrace;
+utf *utf_getSystemClassLoader;
 utf *utf_loadClass;
+utf *utf_printStackTrace;
 
 utf *utf_void__void;                    /* ()V                                */
 utf *utf_boolean__void;                 /* (Z)V                               */
@@ -103,12 +115,16 @@ utf *utf_int__void;                     /* (I)V                               */
 utf *utf_long__void;                    /* (J)V                               */
 utf *utf_float__void;                   /* (F)V                               */
 utf *utf_double__void;                  /* (D)V                               */
+
+utf *utf_void__java_lang_ClassLoader;   /* ()Ljava/lang/ClassLoader;          */
 utf *utf_void__java_lang_Object;        /* ()Ljava/lang/Object;               */
 utf *utf_void__java_lang_Throwable;     /* ()Ljava/lang/Throwable;            */
 utf *utf_java_lang_String__void;        /* (Ljava/lang/String;)V              */
 utf *utf_java_lang_String__java_lang_Class;
 utf *utf_java_lang_Throwable__void;     /* (Ljava/lang/Throwable;)V           */
 
+utf *utf_not_named_yet;                 /* special name for unnamed classes   */
+
 utf *array_packagename;
 
 
@@ -130,17 +146,23 @@ void utf8_init(void)
        utf_java_lang_SecurityManager  = utf_new_char("java/lang/SecurityManager");
        utf_java_lang_String           = utf_new_char("java/lang/String");
        utf_java_lang_System           = utf_new_char("java/lang/System");
+       utf_java_lang_ThreadGroup      = utf_new_char("java/lang/ThreadGroup");
        utf_java_io_Serializable       = utf_new_char("java/io/Serializable");
 
-       utf_java_lang_Throwable        = utf_new_char("java/lang/Throwable");
-       utf_java_lang_VMThrowable      = utf_new_char("java/lang/VMThrowable");
-       utf_java_lang_Exception        = utf_new_char("java/lang/Exception");
-       utf_java_lang_Error            = utf_new_char("java/lang/Error");
-       utf_java_lang_OutOfMemoryError = utf_new_char("java/lang/OutOfMemoryError");
+       utf_java_lang_Throwable        = utf_new_char(string_java_lang_Throwable);
+       utf_java_lang_VMThrowable      = utf_new_char(string_java_lang_VMThrowable);
+       utf_java_lang_Error            = utf_new_char(string_java_lang_Error);
+       utf_java_lang_Exception        = utf_new_char(string_java_lang_Exception);
 
        utf_java_lang_NoClassDefFoundError =
                utf_new_char(string_java_lang_NoClassDefFoundError);
 
+       utf_java_lang_OutOfMemoryError =
+               utf_new_char(string_java_lang_OutOfMemoryError);
+
+       utf_java_lang_ClassNotFoundException =
+               utf_new_char(string_java_lang_ClassNotFoundException);
+
        utf_java_lang_Void             = utf_new_char("java/lang/Void");
        utf_java_lang_Boolean          = utf_new_char("java/lang/Boolean");
        utf_java_lang_Byte             = utf_new_char("java/lang/Byte");
@@ -151,6 +173,14 @@ void utf8_init(void)
        utf_java_lang_Float            = utf_new_char("java/lang/Float");
        utf_java_lang_Double           = utf_new_char("java/lang/Double");
 
+       utf_java_lang_StackTraceElement =
+               utf_new_char("java/lang/StackTraceElement");
+
+       utf_java_lang_reflect_Constructor =
+               utf_new_char("java/lang/reflect/Constructor");
+
+       utf_java_lang_reflect_Field    = utf_new_char("java/lang/reflect/Field");
+       utf_java_lang_reflect_Method   = utf_new_char("java/lang/reflect/Method");
        utf_java_util_Vector           = utf_new_char("java/util/Vector");
 
        utf_InnerClasses               = utf_new_char("InnerClasses");
@@ -162,11 +192,16 @@ void utf8_init(void)
 
        utf_init                           = utf_new_char("<init>");
        utf_clinit                         = utf_new_char("<clinit>");
+       utf_clone                      = utf_new_char("clone");
        utf_finalize                   = utf_new_char("finalize");
+       utf_run                        = utf_new_char("run");
+
+       utf_add                        = utf_new_char("add");
 
        utf_printStackTrace            = utf_new_char("printStackTrace");
        utf_fillInStackTrace           = utf_new_char("fillInStackTrace");
        utf_loadClass                  = utf_new_char("loadClass");
+       utf_getSystemClassLoader       = utf_new_char("getSystemClassLoader");
 
        utf_void__void                 = utf_new_char("()V");
        utf_boolean__void              = utf_new_char("(Z)V");
@@ -179,6 +214,10 @@ void utf8_init(void)
        utf_double__void               = utf_new_char("(D)V");
        utf_void__java_lang_Object     = utf_new_char("()Ljava/lang/Object;");
        utf_void__java_lang_Throwable  = utf_new_char("()Ljava/lang/Throwable;");
+
+       utf_void__java_lang_ClassLoader =
+               utf_new_char("()Ljava/lang/ClassLoader;");
+
        utf_java_lang_String__void     = utf_new_char("(Ljava/lang/String;)V");
 
        utf_java_lang_String__java_lang_Class =
@@ -186,6 +225,8 @@ void utf8_init(void)
 
        utf_java_lang_Throwable__void  = utf_new_char("(Ljava/lang/Throwable;)V");
 
+       utf_not_named_yet              = utf_new_char("\t<not_named_yet>");
+
        array_packagename              = utf_new_char("\t<the array package>");
 }
 
@@ -635,7 +676,7 @@ u4 utf_strlen(utf *u)
                return 0;
        }
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) {
@@ -699,7 +740,7 @@ void utf_display(utf *u)
                return;
        }
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) {
@@ -731,7 +772,7 @@ void utf_display_classname(utf *u)
                return;
        }
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) {
@@ -763,7 +804,7 @@ void utf_sprint(char *buffer, utf *u)
                return;
        }
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) 
@@ -793,7 +834,7 @@ void utf_sprint_classname(char *buffer, utf *u)
                return;
        }
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) {
@@ -846,7 +887,7 @@ void utf_fprint(FILE *file, utf *u)
        if (!u)
                return;
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) { 
@@ -873,7 +914,7 @@ void utf_fprint_classname(FILE *file, utf *u)
     if (!u)
                return;
 
-       endpos = utf_end(u);
+       endpos = UTF_END(u);
        utf_ptr = u->text;
 
        while (utf_ptr < endpos) { 
@@ -942,7 +983,7 @@ bool is_valid_utf(char *utf_ptr, char *end_pos)
                        if (v < min_codepoint[len]) { /* overlong UTF-8 */
                                if (!opt_liberalutf)
                                        fprintf(stderr,"WARNING: Overlong UTF-8 sequence found.\n");
-                               /* XXX change this to panic? */
+                               /* XXX change this to exception? */
                        }
                }
 
@@ -987,7 +1028,7 @@ bool is_valid_name(char *utf_ptr, char *end_pos)
 
 bool is_valid_name_utf(utf *u)
 {
-       return is_valid_name(u->text,utf_end(u));
+       return is_valid_name(u->text, UTF_END(u));
 }