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];
39 if (array->arraytype==ARRAYTYPE_OBJECT || array->arraytype==ARRAYTYPE_OBJECT)
42 new = (java_lang_Object*)heap_allocate(size, false, NULL);
43 memcpy(new, this, size);
49 if (! builtin_instanceof ((java_objectheader*) this, class_java_lang_Cloneable) ) {
50 exceptionptr = native_new_and_init (class_java_lang_CloneNotSupportedException);
54 c = this -> header.vftbl -> class;
55 new = (java_lang_Object*) builtin_new (c);
57 exceptionptr = proto_java_lang_OutOfMemoryError;
61 memcpy (new, this, c->instancesize);
67 * Class: java/lang/Object
69 * Signature: ()Ljava/lang/Class;
71 JNIEXPORT struct java_lang_Class* JNICALL Java_java_lang_Object_getClass ( JNIEnv *env , struct java_lang_Object* this)
73 classinfo *c = this->header.vftbl -> class;
74 use_class_as_object (c);
75 return (java_lang_Class*) c;
79 * Class: java/lang/Object
83 JNIEXPORT s4 JNICALL Java_java_lang_Object_hashCode ( JNIEnv *env , struct java_lang_Object* this)
85 return ((char*) this) - ((char*) 0);
89 * Class: java/lang/Object
93 JNIEXPORT void JNICALL Java_java_lang_Object_notify ( JNIEnv *env , struct java_lang_Object* this)
96 log_text ("java_lang_Object_notify called");
99 signal_cond_for_object(&this->header);
104 * Class: java/lang/Object
108 JNIEXPORT void JNICALL Java_java_lang_Object_notifyAll ( JNIEnv *env , struct java_lang_Object* this)
111 log_text ("java_lang_Object_notifyAll called");
114 broadcast_cond_for_object(&this->header);
119 * Class: java/lang/Object
120 * Method: registerNatives
123 JNIEXPORT void JNICALL Java_java_lang_Object_registerNatives ( JNIEnv *env )
129 * Class: java/lang/Object
133 JNIEXPORT void JNICALL Java_java_lang_Object_wait ( JNIEnv *env , struct java_lang_Object* this, s8 time)
136 log_text ("java_lang_Object_wait called");
139 wait_cond_for_object(&this->header, time);