* src/native/vm/java_lang_Class.c
authorpanzi <none@none>
Wed, 15 Aug 2007 17:03:40 +0000 (17:03 +0000)
committerpanzi <none@none>
Wed, 15 Aug 2007 17:03:40 +0000 (17:03 +0000)
[WITH_CLASSPATH_GNU] [ENABLE_ANNOTATIONS] (vm/vm.h): Added include.

* src/native/vm/gnu/sun_reflect_ConstantPool.c
(vm/stringlocal.h): Added include.
(Java_sun_reflect_ConstantPool_getClassAtIfLoaded0): Removed wrong call of
the macro TRACEJVMCALLS.

* src/native/vm/gnu/java_lang_reflect_Method.c
(Java_java_lang_reflect_Method_getDefaultValue): Added proper casts so
gcc don't give me warnings.

* src/native/vm/gnu/java_lang_reflect_Constructor.c
[ENABLE_ANNOTATIONS] (vm/exceptions.h): Added include.

* src/native/vm/sun/jvm.c
(JVM_ConstantPoolGetStringAt): Corrected cast.
(JVM_ConstantPoolGetUTF8At): Corrected cast.
(JVM_GetArrayElement): Using primitive_box_* functions.

src/native/vm/gnu/java_lang_reflect_Constructor.c
src/native/vm/gnu/java_lang_reflect_Method.c
src/native/vm/gnu/sun_reflect_ConstantPool.c
src/native/vm/java_lang_Class.c
src/native/vm/sun/jvm.c

index 084a0cce33d91a54c10abf939135b7b05a80e36c..98d57ba81b024fcb953d0151de95ee8f7f1ca3ee 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_reflect_Constructor.c 8305 2007-08-15 13:49:26Z panzi $
+   $Id: java_lang_reflect_Constructor.c 8311 2007-08-15 17:03:40Z panzi $
 
 */
 
@@ -34,6 +34,7 @@
 
 #if defined(ENABLE_ANNOTATIONS)
 #include "vm/vm.h"
+#include "vm/exceptions.h"
 #endif
 
 #include "vm/types.h"
index b5c9f5898f7ac981def97145c52c1d2c42df9109..e105ea1a0c291d35db02eb9771434a02100fd54b 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_reflect_Method.c 8305 2007-08-15 13:49:26Z panzi $
+   $Id: java_lang_reflect_Method.c 8311 2007-08-15 17:03:40Z panzi $
 
 */
 
@@ -232,7 +232,7 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_getDefa
        utf                      *utf_desc        = NULL;
        sun_reflect_ConstantPool *constantPool    = NULL;
        java_handle_t            *o               = (java_handle_t*)this;
-       java_lang_Object         *constantPoolOop = NULL;
+       java_lang_Class          *constantPoolOop = NULL;
 
        if (this == NULL) {
                exceptions_throw_nullpointerexception();
@@ -249,7 +249,7 @@ JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_reflect_Method_getDefa
        }
 
        LLNI_field_get_ref(this, clazz, constantPoolOop);
-       LLNI_field_set_ref(constantPool, constantPoolOop, constantPoolOop);
+       LLNI_field_set_ref(constantPool, constantPoolOop, (java_lang_Object*)constantPoolOop);
 
        /* only resolve the method the first time */
        if (m_parseAnnotationDefault == NULL) {
index 1aa693315e0274b5f1179c7e776a5899cc8b1d97..b104710e2398b18839031b5789c469eaa40de3ba 100644 (file)
@@ -50,6 +50,7 @@
 
 #include "vm/vm.h"
 #include "vm/resolve.h"
+#include "vm/stringlocal.h"
 
 #include "vmcore/class.h"
 #include "vmcore/utf8.h"
@@ -129,8 +130,6 @@ JNIEXPORT struct java_lang_Class* JNICALL Java_sun_reflect_ConstantPool_getClass
        classinfo *c = NULL;
        classinfo *cls = (classinfo*)jcpool;
 
-       TRACEJVMCALLS("JVM_ConstantPoolGetClassAtIfLoaded: cls=%p, index=%d", cls, index);
-
        ref = (constant_classref*)class_getconstant(
                cls, index, CONSTANT_Class);
 
index 61d736307b8c2eaef4d1a3f96b0a4c4c2047a7d3..e9cf29d42f20bdec1f743d429d8c6ffc70532545 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_Class.c 8309 2007-08-15 16:42:52Z twisti $
+   $Id: java_lang_Class.c 8311 2007-08-15 17:03:40Z panzi $
 
 */
 
@@ -82,6 +82,7 @@
 #include "vmcore/loader.h"
 
 #if defined(WITH_CLASSPATH_GNU) && defined(ENABLE_ANNOTATIONS)
+#include "vm/vm.h"
 #include "vmcore/annotation.h"
 #include "native/include/sun_reflect_ConstantPool.h"
 #endif
@@ -647,14 +648,14 @@ void _Jv_java_lang_Class_throwException(java_lang_Throwable *t)
  */
 java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* klass)
 {
-       classinfo                *c            = (classinfo*)klass;
+       classinfo                *c               = (classinfo*)klass;
        static methodinfo        *m_parseAnnotationsIntoArray   = NULL;
        utf                      *utf_parseAnnotationsIntoArray = NULL;
-       utf                      *utf_desc     = NULL;
-       java_bytearray           *annotations  = NULL;
-       sun_reflect_ConstantPool *constantPool = NULL;
-       uint32_t                  size         = 0;
-       java_lang_Object         *o            = (java_lang_Object*)klass;
+       utf                      *utf_desc        = NULL;
+       java_bytearray           *annotations     = NULL;
+       sun_reflect_ConstantPool *constantPool    = NULL;
+       uint32_t                  size            = 0;
+       java_lang_Object         *constantPoolOop = (java_lang_Object*)klass;
 
        if (c == NULL) {
                exceptions_throw_nullpointerexception();
@@ -684,7 +685,7 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* kl
                return NULL;
        }
 
-       LLNI_field_set_ref(constantPool, constantPoolOop, o);
+       LLNI_field_set_ref(constantPool, constantPoolOop, constantPoolOop);
 
        /* only resolve the method the first time */
        if (m_parseAnnotationsIntoArray == NULL) {
@@ -711,7 +712,7 @@ java_objectarray *_Jv_java_lang_Class_getDeclaredAnnotations(java_lang_Class* kl
                }
        }
 
-       return vm_call_method(
+       return (java_objectarray*)vm_call_method(
                m_parseAnnotationsIntoArray, NULL,
                annotations, constantPool, klass);
 }
index 330c3de0c18bb6924f587f03bd315269f91d8ee0..a70044cee0e0025e764eb9b2ef4e6b2adb36aa92 100644 (file)
@@ -22,7 +22,7 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: jvm.c 8310 2007-08-15 16:49:03Z twisti $
+   $Id: jvm.c 8311 2007-08-15 17:03:40Z panzi $
 
 */
 
@@ -1463,7 +1463,7 @@ jstring JVM_ConstantPoolGetStringAt(JNIEnv *env, jobject unused, jobject jcpool,
        }
 
        /* XXX: I hope literalstring_new is the right Function. */
-       return (java_lang_String*)literalstring_new(ref);
+       return (jstring)literalstring_new(ref);
 }
 
 
@@ -1483,7 +1483,7 @@ jstring JVM_ConstantPoolGetUTF8At(JNIEnv *env, jobject unused, jobject jcpool, j
        }
 
        /* XXX: I hope literalstring_new is the right Function. */
-       return (java_lang_String*)literalstring_new(ref);
+       return (jstring)literalstring_new(ref);
 }
 
 
@@ -2192,8 +2192,8 @@ jobject JVM_GetArrayElement(JNIEnv *env, jobject arr, jint index)
 {
 /*     log_println("JVM_GetArrayElement: IMPLEMENT ME!"); */
 
-       java_arrayheader *a;
-       java_handle_t    *o = NULL;
+       java_arrayheader *a = NULL;
+       int32_t elementtype = 0;
 
        TRACEJVMCALLS("JVM_GetArrayElement: arr=%p, index=%d", arr, index);
 
@@ -2209,58 +2209,37 @@ jobject JVM_GetArrayElement(JNIEnv *env, jobject arr, jint index)
                return NULL;
        }
        
-       if (index < 0 || index > a->size ) {
+       if (index < 0 || index > a->size) {
                exceptions_new_arrayindexoutofboundsexception(index);
                return NULL;
        }
        
-       switch (a->objheader.vftbl->arraydesc->arraytype) {
+       elementtype = a->objheader.vftbl->arraydesc->elementtype;
+
+       switch (elementtype) {
        case ARRAYTYPE_INT:
-               o = builtin_new(class_java_lang_Integer);
-               if (o != NULL)
-                       ((java_lang_Integer*)o)->value = ((java_intarray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_int(((java_intarray*)a)->data[index]);
        case ARRAYTYPE_LONG:
-               o = builtin_new(class_java_lang_Long);
-               if (o != NULL)
-                       ((java_lang_Long*)o)->value = ((java_longarray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_long(((java_longarray*)a)->data[index]);
        case ARRAYTYPE_FLOAT:
-               o = builtin_new(class_java_lang_Float);
-               if (o != NULL)
-                       ((java_lang_Float*)o)->value = ((java_floatarray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_float(((java_floatarray*)a)->data[index]);
        case ARRAYTYPE_DOUBLE:
-               o = builtin_new(class_java_lang_Double);
-               if (o != NULL)
-                       ((java_lang_Double*)o)->value = ((java_doublearray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_double(((java_doublearray*)a)->data[index]);
        case ARRAYTYPE_BYTE:
-               o = builtin_new(class_java_lang_Byte);
-               if (o != NULL)
-                       ((java_lang_Byte*)o)->value = ((java_bytearray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_byte(((java_bytearray*)a)->data[index]);
        case ARRAYTYPE_CHAR:
-               o = builtin_new(class_java_lang_Character);
-               if (o != NULL)
-                       ((java_lang_Character*)o)->value = ((java_chararray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_char(((java_chararray*)a)->data[index]);
        case ARRAYTYPE_SHORT:
-               o = builtin_new(class_java_lang_Short);
-               if (o != NULL)
-                       ((java_lang_Short*)o)->value = ((java_shortarray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_short(((java_shortarray*)a)->data[index]);
        case ARRAYTYPE_BOOLEAN:
-               o = builtin_new(class_java_lang_Boolean);
-               if (o != NULL)
-                       ((java_lang_Boolean*)o)->value = ((java_booleanarray*)a)->data[index];
-               break;
+               return (jobject)primitive_box_boolean(((java_booleanarray*)a)->data[index]);
        case ARRAYTYPE_OBJECT:
-               o = ((java_objectarray*)a)->data[index];
-               break;
+               return (jobject)((java_objectarray*)a)->data[index];
+       default:
+               /* invalid element type */
+               exceptions_throw_internalerror("invalid element type code in array descriptor: %d", elementtype);
+               return (jobject)NULL;
        }
-
-       return (jobject)o;
 }