* Removed all Id tags.
[cacao.git] / src / native / vm / java_lang_ClassLoader.c
index 07c3ff088d4e0aa373f1f821021896bce8cec965..0e17e73a8b6ac283d79ad0a0470203083ca7bcf7 100644 (file)
@@ -22,8 +22,6 @@
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
    02110-1301, USA.
 
-   $Id: java_lang_VMClass.c 6131 2006-12-06 22:15:57Z twisti $
-
 */
 
 
@@ -39,6 +37,7 @@
 #include "vm/global.h"                          /* required by native headers */
 
 #include "native/jni.h"
+#include "native/llni.h"
 
 /* keep this order of the native includes */
 
  * Method:    defineClass
  * Signature: (Ljava/lang/ClassLoader;Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
  */
-java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_bytearray *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
+java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl, java_lang_String *name, java_handle_bytearray_t *data, s4 offset, s4 len, java_security_ProtectionDomain *pd)
 {
-       java_objectheader *loader;
-       utf               *utfname;
-       classinfo         *c;
-       java_lang_Class   *o;
+       classloader     *loader;
+       utf             *utfname;
+       classinfo       *c;
+       java_lang_Class *o;
 
 #if defined(ENABLE_JVMTI)
        jint new_class_data_len = 0;
        unsigned char* new_class_data = NULL;
 #endif
 
-       loader = (java_objectheader *) cl;
+       loader = (classloader *) cl;
 
        /* check if data was passed */
 
@@ -96,7 +95,7 @@ java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl
 
        /* check the indexes passed */
 
-       if ((offset < 0) || (len < 0) || ((offset + len) > data->header.size)) {
+       if ((offset < 0) || (len < 0) || ((offset + len) > LLNI_array_size(data))) {
                exceptions_throw_arrayindexoutofboundsexception();
                return NULL;
        }
@@ -104,7 +103,7 @@ java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl
        if (name != NULL) {
                /* convert '.' to '/' in java string */
 
-               utfname = javastring_toutf((java_objectheader *) name, true);
+               utfname = javastring_toutf((java_handle_t *) name, true);
        } 
        else {
                utfname = NULL;
@@ -115,7 +114,7 @@ java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl
 
        if (jvmti)
                jvmti_ClassFileLoadHook(utfname, len, (unsigned char *) data->data, 
-                                                               loader, (java_objectheader *) pd, 
+                                                               loader, (java_handle_t *) pd, 
                                                                &new_class_data_len, &new_class_data);
 #endif
 
@@ -125,22 +124,22 @@ java_lang_Class *_Jv_java_lang_ClassLoader_defineClass(java_lang_ClassLoader *cl
        /* check if the JVMTI wants to modify the class */
 
        if (new_class_data == NULL)
-               c = class_define(utfname, loader, new_class_data_len, new_class_data); 
+               c = class_define(utfname, loader, new_class_data_len, new_class_data, pd);
        else
 #endif
-               c = class_define(utfname, loader, len, (u1 *) &data->data[offset]); 
+               c = class_define(utfname, loader, len, (const uint8_t *) &data->data[offset], pd);
 
        if (c == NULL)
                return NULL;
 
        /* for convenience */
 
-       o = (java_lang_Class *) c;
+       o = LLNI_classinfo_wrap(c);
 
 #if defined(WITH_CLASSPATH_GNU)
        /* set ProtectionDomain */
 
-       o->pd = pd;
+       LLNI_field_set_ref(o, pd, pd);
 #endif
 
        return o;