Index: classes/java/lang/VMClassLoader.java =================================================================== RCS file: /cvsroot/kissme/classes/java/lang/VMClassLoader.java,v retrieving revision 1.1 diff -u -r1.1 VMClassLoader.java --- classes/java/lang/VMClassLoader.java 2001/03/25 04:04:37 1.1 +++ classes/java/lang/VMClassLoader.java 2001/11/10 16:41:17 @@ -52,5 +52,5 @@ ** etc. ** @return a "bogus" class representing the primitive type. **/ - final static native Class getPrimitiveClass(String type); + final static native Class getPrimitiveClass(char type); } Index: lib/indigenous/java.lang/VMClassLoader.c =================================================================== RCS file: /cvsroot/kissme/lib/indigenous/java.lang/VMClassLoader.c,v retrieving revision 1.11 diff -u -r1.11 VMClassLoader.c --- lib/indigenous/java.lang/VMClassLoader.c 2001/10/06 20:40:10 1.11 +++ lib/indigenous/java.lang/VMClassLoader.c 2001/11/10 16:41:18 @@ -67,6 +67,47 @@ return -1; } +static jclass primitiveCharToClass(const jchar type) +{ + int i; + switch (type) { + case 'Z': /* boolean */ + i = 0; + break; + case 'C': /* char */ + i = 1; + break; + case 'F': /* float */ + i = 2; + break; + case 'D': /* double */ + i = 3; + break; + case 'B': /* byte */ + i = 4; + break; + case 'S': /* short */ + i = 5; + break; + case 'I': /* int */ + i = 6; + break; + case 'J': /* long */ + i = 7; + break; + case 'V': /* void */ + i = 8; + break; + default: + i = -1; + } + + if (i >= 0) + return primTypes[i].classObject; + else + return NULL; +} + /* Makes the actual tClass* structure for a primitive type, and also creates a class object Stores the result in a special structure for primitive types The prim->type field is already set when this method is called @@ -243,17 +284,21 @@ jclass java_lang_VMClassLoader_getPrimitiveClass( JNIEnv* env, jclass clazz, - jobject string + jchar type ) { - jclass ret; //Note clazz is allowed to be NULL! - char* name = (char*) INTERP_AscizFromString(env, string); - ret = java_lang_VMClassLoader_getPrimitiveClassFromAsciz (env, name); - sys_free(name); + jclass ret; + + //just check that the primitive types have been created + assert(primTypes[0].type == T_BOOLEAN); + + ret = primitiveCharToClass(type); + if (ret == NULL) + (*env)->Throw(env, INTERP_NewObjectFromName(env, "java/lang/NoClassDefFoundError")); + return ret; } - /** Helper to resolve all references to other classes from this class. Index: lib/indigenous/java.lang/VMClassLoader.h =================================================================== RCS file: /cvsroot/kissme/lib/indigenous/java.lang/VMClassLoader.h,v retrieving revision 1.3 diff -u -r1.3 VMClassLoader.h --- lib/indigenous/java.lang/VMClassLoader.h 2001/04/29 18:17:06 1.3 +++ lib/indigenous/java.lang/VMClassLoader.h 2001/11/10 16:41:18 @@ -3,7 +3,7 @@ jclass java_lang_VMClassLoader_getPrimitiveClass( JNIEnv* env, jclass clazz, - jobject string + jchar type ); void java_lang_VMClassLoader_resolveClass( Index: vm/native/java_lang_VMClassLoader_natives.h =================================================================== RCS file: /cvsroot/kissme/vm/native/java_lang_VMClassLoader_natives.h,v retrieving revision 1.1 diff -u -r1.1 java_lang_VMClassLoader_natives.h --- vm/native/java_lang_VMClassLoader_natives.h 2001/07/01 16:24:12 1.1 +++ vm/native/java_lang_VMClassLoader_natives.h 2001/11/10 16:41:18 @@ -1,5 +1,5 @@ //There are no longer any native methods for ClassLoader in the Classpath version //All native stuff is in VMClassLoader - {"java/lang/VMClassLoader", "getPrimitiveClass", "(Ljava/lang/String;)Ljava/lang/Class;", (void*) java_lang_VMClassLoader_getPrimitiveClass}, + {"java/lang/VMClassLoader", "getPrimitiveClass", "(C)Ljava/lang/Class;", (void*) java_lang_VMClassLoader_getPrimitiveClass}, {"java/lang/VMClassLoader", "defineClass", "(Ljava/lang/ClassLoader;Ljava/lang/String;[BII)Ljava/lang/Class;", (void*) java_lang_VMClassLoader_defineClass}, {"java/lang/VMClassLoader", "resolveClass", "(Ljava/lang/Class;)V", (void*) java_lang_VMClassLoader_resolveClass},