PatchSet 7585 Date: 2007/10/22 13:38:54 Author: robilad Branch: HEAD Tag: (none) Log: 2007-10-22 Dalibor Topic <[EMAIL PROTECTED]>
* kaffe/kaffevm/classMethod.h (getPrimitiveClassFromSignature): Added prototype. * kaffe/kaffevm/itypes.c (getPrimitiveClassFromSignature): New function. (classFromSig) Delegate to getPrimitiveClassFromSignature for primitive types. Members: ChangeLog:1.5082->1.5083 kaffe/kaffevm/classMethod.h:1.95->1.96 kaffe/kaffevm/itypes.c:1.41->1.42 Index: kaffe/ChangeLog diff -u kaffe/ChangeLog:1.5082 kaffe/ChangeLog:1.5083 --- kaffe/ChangeLog:1.5082 Mon Oct 22 11:57:34 2007 +++ kaffe/ChangeLog Mon Oct 22 13:38:54 2007 @@ -1,5 +1,15 @@ 2007-10-22 Dalibor Topic <[EMAIL PROTECTED]> + * kaffe/kaffevm/classMethod.h (getPrimitiveClassFromSignature): + Added prototype. + + * kaffe/kaffevm/itypes.c (getPrimitiveClassFromSignature): + New function. + (classFromSig) Delegate to getPrimitiveClassFromSignature + for primitive types. + +2007-10-22 Dalibor Topic <[EMAIL PROTECTED]> + * kaffe/kaffevm/itypes.c (classFromSig): Don't post VerifyError here, throw it in the calling function. (getClassFromSignaturePart) Post VerifyError if call Index: kaffe/kaffe/kaffevm/classMethod.h diff -u kaffe/kaffe/kaffevm/classMethod.h:1.95 kaffe/kaffe/kaffevm/classMethod.h:1.96 --- kaffe/kaffe/kaffevm/classMethod.h:1.95 Sat Sep 22 17:36:13 2007 +++ kaffe/kaffe/kaffevm/classMethod.h Mon Oct 22 13:38:54 2007 @@ -701,6 +701,7 @@ int sizeofSigMethod(Method *, bool); int sizeofSigClass(Hjava_lang_Class*, bool); void establishMethod(Method*); +Hjava_lang_Class* getPrimitiveClassFromSignature(const char); Hjava_lang_Class* getClassFromSignature(const char*, Hjava_lang_ClassLoader*, errorInfo*); Hjava_lang_Class* getClassFromSignaturePart(const char*, Hjava_lang_ClassLoader*, errorInfo*); int countArgsInSignature(const char *); Index: kaffe/kaffe/kaffevm/itypes.c diff -u kaffe/kaffe/kaffevm/itypes.c:1.41 kaffe/kaffe/kaffevm/itypes.c:1.42 --- kaffe/kaffe/kaffevm/itypes.c:1.41 Mon Oct 22 11:57:36 2007 +++ kaffe/kaffe/kaffevm/itypes.c Mon Oct 22 13:38:54 2007 @@ -164,15 +164,6 @@ const char* end; switch (*(*strp)++) { - case 'V': return (voidClass); - case 'I': return (intClass); - case 'Z': return (booleanClass); - case 'S': return (shortClass); - case 'B': return (byteClass); - case 'C': return (charClass); - case 'F': return (floatClass); - case 'D': return (doubleClass); - case 'J': return (longClass); case '[': return (lookupArray(classFromSig(strp, loader, einfo), einfo)); case 'L': @@ -193,8 +184,7 @@ return(cl); default: - /* malformed signature */ - return (NULL); + return getPrimitiveClassFromSignature(*(*(strp)-1)); } } @@ -242,4 +232,29 @@ /* Otherwise, post an exception message. */ postException(einfo, JAVA_LANG(VerifyError)); return (NULL); +} + +/** + * Return a primitive class for a given signature. + * + * @param sig signature (V,I,Z,S,B,C,F,D,J) + * + * @return primitive class corresponding to signature, otherwise NULL. + */ +Hjava_lang_Class* +getPrimitiveClassFromSignature(const char sig) +{ + switch(sig) { + case 'V': return (voidClass); + case 'I': return (intClass); + case 'Z': return (booleanClass); + case 'S': return (shortClass); + case 'B': return (byteClass); + case 'C': return (charClass); + case 'F': return (floatClass); + case 'D': return (doubleClass); + case 'J': return (longClass); + default: + return NULL; + } } _______________________________________________ kaffe mailing list kaffe@kaffe.org http://kaffe.org/cgi-bin/mailman/listinfo/kaffe