All files with updated copyright.
2001-01-07 Alexandre Petit-Bianco <apbianco@cygnus.com> All files with updated copyright. * prims.cc (class _Jv_PrimClass): Removed. (init_prim_class): New function. (DECLARE_PRIM_TYPE): Rewritten. `java::lang::Class' replaces `_Jv_PrimClass' in primitive type declarations. Assign to the value returned by `init_prim_class.' * gcj/array.h: `java::lang::Class' replaces `_Jv_PrimClass' in primitive type declarations. (JvPrimClass): Cast to `jclass' removed. * java/lang/Class.h (Class): New constructor. (Class): New copy constructor. (initializePrim): New prototype. (_Jv_PrimClass): Field removed. * java/lang/Object.h (struct _JvObjectPrefix): New virtuals nacd_1 and nacd_2 (for compatibility with the new C++ ABI.) (class java::lang::Object): `finalize' moved up front. * java/lang/natClass.cc (isAssignableFrom): Turned outline. (isInstance): Likewise. (isInterface): Likewise, fixed indentation. (initializePrim): New function. (New C++ ABI compatibility patch: http://sources.redhat.com/ml/java-patches/2001-q1/msg00065.html) From-SVN: r39032
This commit is contained in:
parent
dc08e60389
commit
2feccc205e
6 changed files with 121 additions and 73 deletions
|
@ -1,6 +1,6 @@
|
|||
// Class.h - Header file for java.lang.Class. -*- c++ -*-
|
||||
|
||||
/* Copyright (C) 1998, 1999, 2000 Free Software Foundation
|
||||
/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
|
||||
|
||||
This file is part of libgcj.
|
||||
|
||||
|
@ -14,6 +14,7 @@ details. */
|
|||
|
||||
#pragma interface
|
||||
|
||||
#include <stdio.h>
|
||||
#include <java/lang/Object.h>
|
||||
#include <java/lang/String.h>
|
||||
#include <java/net/URL.h>
|
||||
|
@ -191,6 +192,53 @@ public:
|
|||
// finalization
|
||||
void finalize ();
|
||||
|
||||
// For the initialization of primitive types: some constructors as
|
||||
// required by prims.cc:init_prim_class(), and the prototype of
|
||||
// method to perform a lightweight initialization of a Class object.
|
||||
Class (void) {}
|
||||
Class (const Class& x) : Object () {
|
||||
|
||||
// C++ ctors are fixing the vtbl in a way that doesn't fit Java.
|
||||
// We can fix the C++ compiler, or we can hack our runtime. What's
|
||||
// below fix the vtable so that it starts at -2.
|
||||
void *p = ((void **)this)[0];
|
||||
((void **)this)[0] = (void *)((char *)p-2*sizeof (void *));
|
||||
|
||||
_Jv_VTable *avtable = x.vtable;
|
||||
|
||||
// We must initialize every field of the class. We do this in
|
||||
// the same order they are declared in Class.h.
|
||||
next = NULL;
|
||||
name = x.name;
|
||||
accflags = x.accflags;
|
||||
superclass = NULL;
|
||||
constants.size = 0;
|
||||
constants.tags = NULL;
|
||||
constants.data = NULL;
|
||||
methods = NULL;
|
||||
method_count = x.method_count;
|
||||
vtable_method_count = 0;
|
||||
fields = NULL;
|
||||
size_in_bytes = x.size_in_bytes;
|
||||
field_count = 0;
|
||||
static_field_count = 0;
|
||||
vtable = JV_PRIMITIVE_VTABLE;
|
||||
interfaces = NULL;
|
||||
loader = NULL;
|
||||
interface_count = 0;
|
||||
state = JV_STATE_DONE;
|
||||
thread = NULL;
|
||||
depth = -1;
|
||||
ancestors = NULL;
|
||||
idt = NULL;
|
||||
|
||||
if (method_count != 'V')
|
||||
_Jv_NewArrayClass (this, NULL, avtable);
|
||||
else
|
||||
arrayclass = NULL;
|
||||
}
|
||||
void initializePrim (jobject cname, jbyte sig, jint len, jobject avtable);
|
||||
|
||||
static java::lang::Class class$;
|
||||
|
||||
private:
|
||||
|
@ -237,8 +285,6 @@ private:
|
|||
friend jint JvNumMethods (jclass);
|
||||
friend jmethodID JvGetFirstMethod (jclass);
|
||||
|
||||
friend class _Jv_PrimClass;
|
||||
|
||||
// Friends classes and functions to implement the ClassLoader
|
||||
friend class java::lang::ClassLoader;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue