1 /* class: java/lang/Object */
4 * Class: java/lang/Object
6 * Signature: ()Ljava/lang/Object;
8 JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_Object_clone ( JNIEnv *env , struct java_lang_Object* this)
11 java_lang_Object *new;
13 if (((java_objectheader*)this)->vftbl->class == class_array)
15 static u4 multiplicator[10];
16 static int is_initialized = 0;
18 java_arrayheader *array = (java_arrayheader*)this;
23 multiplicator[ARRAYTYPE_INT] = sizeof(s4);
24 multiplicator[ARRAYTYPE_LONG] = sizeof(s8);
25 multiplicator[ARRAYTYPE_FLOAT] = sizeof(float);
26 multiplicator[ARRAYTYPE_DOUBLE] = sizeof(double);
27 multiplicator[ARRAYTYPE_BYTE] = sizeof(s1);
28 multiplicator[ARRAYTYPE_CHAR] = sizeof(u2);
29 multiplicator[ARRAYTYPE_SHORT] = sizeof(s2);
30 multiplicator[ARRAYTYPE_BOOLEAN] = sizeof(u1);
31 multiplicator[ARRAYTYPE_OBJECT] = sizeof(void*);
32 multiplicator[ARRAYTYPE_ARRAY] = sizeof(void*);
36 size = sizeof(java_arrayheader)
37 + array->size * multiplicator[array->arraytype];
38 if (array->arraytype == ARRAYTYPE_OBJECT /* elementtype */
39 || array->arraytype == ARRAYTYPE_ARRAY) /* elementdescriptor */
40 size += sizeof(void*);
42 if (array->arraytype==ARRAYTYPE_OBJECT || array->arraytype==ARRAYTYPE_OBJECT)
45 new = (java_lang_Object*)heap_allocate(size, false, NULL);
46 memcpy(new, this, size);
52 if (! builtin_instanceof ((java_objectheader*) this, class_java_lang_Cloneable) ) {
53 exceptionptr = native_new_and_init (class_java_lang_CloneNotSupportedException);
57 c = this -> header.vftbl -> class;
58 new = (java_lang_Object*) builtin_new (c);
60 exceptionptr = proto_java_lang_OutOfMemoryError;
64 memcpy (new, this, c->instancesize);
70 * Class: java/lang/Object
72 * Signature: ()Ljava/lang/Class;
74 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_Object_getClass ( JNIEnv *env , struct java_lang_Object* this)
76 classinfo *c = this->header.vftbl -> class;
77 use_class_as_object (c);
78 return (java_lang_Class*) c;
82 * Class: java/lang/Object
86 JNIEXPORT s4 JNICALL Java_java_lang_Object_hashCode ( JNIEnv *env , struct java_lang_Object* this)
88 return ((char*) this) - ((char*) 0);
92 * Class: java/lang/Object
96 JNIEXPORT void JNICALL Java_java_lang_Object_notify ( JNIEnv *env , struct java_lang_Object* this)
99 log_text ("java_lang_Object_notify called");
102 signal_cond_for_object(&this->header);
107 * Class: java/lang/Object
111 JNIEXPORT void JNICALL Java_java_lang_Object_notifyAll ( JNIEnv *env , struct java_lang_Object* this)
114 log_text ("java_lang_Object_notifyAll called");
117 broadcast_cond_for_object(&this->header);
122 * Class: java/lang/Object
123 * Method: registerNatives
126 JNIEXPORT void JNICALL Java_java_lang_Object_registerNatives ( JNIEnv *env )
132 * Class: java/lang/Object
136 JNIEXPORT void JNICALL Java_java_lang_Object_wait ( JNIEnv *env , struct java_lang_Object* this, s8 time)
139 log_text ("java_lang_Object_wait called");
142 wait_cond_for_object(&this->header, time);