| // Object.h - Header file for java.lang.Object. -*- c++ -*- |
| |
| /* Copyright (C) 1998, 1999, 2000, 2001, 2004, 2005 Free Software Foundation |
| |
| This file is part of libgcj. |
| |
| This software is copyrighted work licensed under the terms of the |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for |
| details. */ |
| |
| #ifndef __JAVA_LANG_OBJECT_H__ |
| #define __JAVA_LANG_OBJECT_H__ |
| |
| #pragma interface |
| |
| #include <gcj/javaprims.h> |
| |
| extern "Java" |
| { |
| // This class is mainly here as a kludge to get G++ to allocate two |
| // extra entries in each vtable. |
| struct _JvObjectPrefix |
| { |
| protected: |
| // New ABI Compatibility Dummy, #1 and 2. |
| virtual void nacd_1 (void) {}; // This slot really contains the Class pointer. |
| // For IA64, the GC descriptor goes into the second word of the nacd1 descr. |
| # ifndef __ia64__ |
| virtual void nacd_2 (void) {}; // Actually the GC bitmap marking descriptor. |
| # endif |
| }; |
| } |
| |
| // Forward declarations for friends of java::lang::Object |
| void _Jv_MonitorEnter (jobject obj); |
| void _Jv_MonitorExit (jobject obj); |
| void _Jv_InitializeSyncMutex (void); |
| void _Jv_FinalizeObject (jobject obj); |
| bool _Jv_ObjectCheckMonitor (jobject obj); |
| |
| class java::lang::Object : public _JvObjectPrefix |
| { |
| protected: |
| virtual void finalize (void); |
| public: |
| // Order must match order in Object.java. |
| jclass getClass (void); |
| virtual jint hashCode (void); |
| void notify (void); |
| void notifyAll (void); |
| void wait (jlong timeout, jint nanos); |
| virtual jboolean equals (jobject obj); |
| Object (void); |
| virtual jstring toString (void); |
| void wait (void); |
| void wait (jlong timeout); |
| |
| friend void ::_Jv_MonitorEnter (jobject obj); |
| friend void ::_Jv_MonitorExit (jobject obj); |
| friend void ::_Jv_InitializeSyncMutex (void); |
| friend void ::_Jv_FinalizeObject (jobject obj); |
| friend bool ::_Jv_ObjectCheckMonitor (jobject obj); |
| |
| #ifdef JV_MARKOBJ_DECL |
| friend JV_MARKOBJ_DECL; |
| #endif |
| #ifdef JV_MARKARRAY_DECL |
| friend JV_MARKARRAY_DECL; |
| #endif |
| |
| static java::lang::Class class$; |
| |
| protected: |
| virtual jobject clone (void); |
| |
| private: |
| // This does not actually refer to a Java object. Instead it is a |
| // placeholder for a piece of internal data (the synchronization |
| // information). |
| # ifndef JV_HASH_SYNCHRONIZATION |
| jobject sync_info; |
| # endif |
| |
| // Initialize the sync_info field. Not called with JV_HASH_SYNCHRONIZATION. |
| void sync_init (void); |
| }; |
| |
| #endif /* __JAVA_LANG_OBJECT_H__ */ |