mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C++
		
	
	
	
// Object.h - Header file for java.lang.Object.  -*- c++ -*-
 | 
						|
 | 
						|
/* Copyright (C) 1998, 1999  Cygnus Solutions
 | 
						|
 | 
						|
   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 <javaprims.h>
 | 
						|
#include <java-assert.h>
 | 
						|
#include <java-threads.h>
 | 
						|
#include <java-gc.h>
 | 
						|
 | 
						|
// This class is mainly here as a kludge to get G++ to allocate
 | 
						|
// vtable pointer as the *first* word of each Object, instead of
 | 
						|
// the second word (following sync_info).  Note that various pieces of
 | 
						|
// code know that finalize() is the first method.  For instance,
 | 
						|
// Object.java knows this, as does _Jv_AllocObject.
 | 
						|
 | 
						|
struct _JvObjectPrefix
 | 
						|
{
 | 
						|
protected:
 | 
						|
  // This is disguised as the C++ vtbl.
 | 
						|
  // _Jv_VTable*  vtable;
 | 
						|
 | 
						|
  virtual void finalize () = 0;
 | 
						|
};
 | 
						|
 | 
						|
class java::lang::Object : public _JvObjectPrefix
 | 
						|
{
 | 
						|
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 jint _Jv_MonitorEnter (jobject obj);
 | 
						|
  friend jint _Jv_MonitorExit (jobject obj);
 | 
						|
  friend void _Jv_InitializeSyncMutex (void);
 | 
						|
  friend void _Jv_FinalizeObject (jobject obj);
 | 
						|
 | 
						|
#ifdef JV_MARKOBJ_DECL
 | 
						|
  friend JV_MARKOBJ_DECL;
 | 
						|
#endif
 | 
						|
#ifdef JV_MARKARRAY_DECL
 | 
						|
  friend JV_MARKARRAY_DECL;
 | 
						|
#endif
 | 
						|
 | 
						|
protected:
 | 
						|
  virtual jobject clone (void);
 | 
						|
  virtual void finalize (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).
 | 
						|
  jobject sync_info;
 | 
						|
 | 
						|
  // Initialize the sync_info field.
 | 
						|
  void sync_init (void);
 | 
						|
 | 
						|
  static void hack12_6 (jobject f);
 | 
						|
};
 | 
						|
 | 
						|
#endif /* __JAVA_LANG_OBJECT_H__ */
 |