gcc/libjava/java/lang/Object.h
Hans Boehm 938f37772e prims.cc: Some old cleanups.
* libjava/prims.cc: Some old cleanups.  The collector now
	handles test for out of memory.
	* libjava/prims.cc, libjava/gcj/javaprims.h:
	(_Jv_AllocObjectNoInitNoFinalizer, _Jv_AllocObjectNoFinalizer):
	New functions for finalizer-free allocation.
	(jvmpi_notify_alloc): Became separate function.
	* libjava/java/lang/Object.h, libjava/include/jvm.h: Adjust for
	revised vtable layout on IA64.  With TARGET_VTABLE_USES_DESCRIPTORS,
	there is only one extra descriptor.

From-SVN: r48002
2001-12-14 18:43:55 +00:00

78 lines
2.0 KiB
C++

// Object.h - Header file for java.lang.Object. -*- c++ -*-
/* Copyright (C) 1998, 1999, 2000, 2001 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>
// 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
};
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);
#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__ */