1 // Object.h - Header file for java.lang.Object. -*- c++ -*- 2 3 /* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation 4 5 This file is part of libgcj. 6 7 This software is copyrighted work licensed under the terms of the 8 Libgcj License. Please consult the file "LIBGCJ_LICENSE" for 9 details. */ 10 11 #ifndef __JAVA_LANG_OBJECT_H__ 12 #define __JAVA_LANG_OBJECT_H__ 13 14 #pragma interface 15 16 #include <gcj/javaprims.h> 17 18 // This class is mainly here as a kludge to get G++ to allocate two 19 // extra entries in each vtable. 20 struct _JvObjectPrefix 21 { 22 protected: 23 // New ABI Compatibility Dummy, #1 and 2. nacd_1_JvObjectPrefix24 virtual void nacd_1 (void) {}; // This slot really contains the Class pointer. 25 // For IA64, the GC descriptor goes into the second word of the nacd1 descr. 26 # ifndef __ia64__ nacd_2_JvObjectPrefix27 virtual void nacd_2 (void) {}; // Actually the GC bitmap marking descriptor. 28 # endif 29 }; 30 31 class java::lang::Object : public _JvObjectPrefix 32 { 33 protected: 34 virtual void finalize (void); 35 public: 36 // Order must match order in Object.java. 37 jclass getClass (void); 38 virtual jint hashCode (void); 39 void notify (void); 40 void notifyAll (void); 41 void wait (jlong timeout, jint nanos); 42 virtual jboolean equals (jobject obj); 43 Object (void); 44 virtual jstring toString (void); 45 void wait (void); 46 void wait (jlong timeout); 47 48 friend void _Jv_MonitorEnter (jobject obj); 49 friend void _Jv_MonitorExit (jobject obj); 50 friend void _Jv_InitializeSyncMutex (void); 51 friend void _Jv_FinalizeObject (jobject obj); 52 friend bool _Jv_ObjectCheckMonitor (jobject obj); 53 54 #ifdef JV_MARKOBJ_DECL 55 friend JV_MARKOBJ_DECL; 56 #endif 57 #ifdef JV_MARKARRAY_DECL 58 friend JV_MARKARRAY_DECL; 59 #endif 60 61 static java::lang::Class class$; 62 63 protected: 64 virtual jobject clone (void); 65 66 private: 67 // This does not actually refer to a Java object. Instead it is a 68 // placeholder for a piece of internal data (the synchronization 69 // information). 70 # ifndef JV_HASH_SYNCHRONIZATION 71 jobject sync_info; 72 # endif 73 74 // Initialize the sync_info field. Not called with JV_HASH_SYNCHRONIZATION. 75 void sync_init (void); 76 }; 77 78 #endif /* __JAVA_LANG_OBJECT_H__ */ 79