1 /* class: java/lang/Object */
10 #include "threads/locks.h"
11 #include "toolbox/loging.h"
12 #include "toolbox/memory.h"
13 #include "java_lang_Cloneable.h"
14 #include "java_lang_Object.h"
18 * Class: java/lang/Object
20 * Signature: ()Ljava/lang/Object;
22 JNIEXPORT struct java_lang_Object* JNICALL Java_java_lang_VMObject_clone ( JNIEnv *env , jclass clazz, struct java_lang_Cloneable* this)
24 /* log_text("Java_java_lang_VMObject_clone called");
25 log_utf(((java_objectheader*)this)->vftbl->class->name);
26 log_text("starting cloning"); */
28 java_lang_Object *new;
29 arraydescriptor *desc;
31 if ((desc = this->header.vftbl->arraydesc) != NULL) {
32 /* We are cloning an array */
34 u4 size = desc->dataoffset + desc->componentsize * ((java_arrayheader*)this)->size;
36 new = (java_lang_Object*)heap_allocate(size, (desc->arraytype == ARRAYTYPE_OBJECT), NULL);
37 memcpy(new, this, size);
42 /* We are cloning a non-array */
43 if (! builtin_instanceof ((java_objectheader*) this, class_java_lang_Cloneable) ) {
44 exceptionptr = native_new_and_init (class_java_lang_CloneNotSupportedException);
48 /* XXX should use vftbl */
49 c = this -> header.vftbl -> class;
50 new = (java_lang_Object*) builtin_new (c);
52 exceptionptr = proto_java_lang_OutOfMemoryError;
55 memcpy (new, this, c->instancesize);
61 * Class: java/lang/Object
65 JNIEXPORT void JNICALL Java_java_lang_VMObject_notify ( JNIEnv *env , jclass clazz, struct java_lang_Object* this)
68 log_text ("java_lang_Object_notify called");
71 signal_cond_for_object(&this->header);
76 * Class: java/lang/Object
80 JNIEXPORT void JNICALL Java_java_lang_VMObject_notifyAll ( JNIEnv *env , jclass clazz, struct java_lang_Object* this)
83 log_text ("java_lang_Object_notifyAll called");
86 broadcast_cond_for_object(&this->header);
92 * Class: java/lang/Object
96 JNIEXPORT void JNICALL Java_java_lang_VMObject_wait ( JNIEnv *env , jclass clazz, struct java_lang_Object* this, s8 time,s4 par3)
99 log_text ("java_lang_Object_wait called");
102 wait_cond_for_object(&this->header, time);
108 * These are local overrides for various environment variables in Emacs.
109 * Please do not remove this and leave it at the end of the file, where
110 * Emacs will automagically detect them.
111 * ---------------------------------------------------------------------
114 * indent-tabs-mode: t