From 331e4168e90ee0b3d9b905c4ab51d5a8c659a14f Mon Sep 17 00:00:00 2001 From: apbianco Date: Mon, 15 Jan 2001 08:11:40 +0000 Subject: 2001-01-07 Alexandre Petit-Bianco 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) git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39032 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/lang/natClass.cc | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) (limited to 'libjava/java/lang/natClass.cc') diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index 3a02b46a8af..0e5479154b4 100644 --- a/libjava/java/lang/natClass.cc +++ b/libjava/java/lang/natClass.cc @@ -1,6 +1,6 @@ // natClass.cc - Implementation of java.lang.Class native methods. -/* Copyright (C) 1998, 1999, 2000 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation This file is part of libgcj. @@ -615,7 +615,7 @@ java::lang::Class::getMethods (void) return result; } -inline jboolean +jboolean java::lang::Class::isAssignableFrom (jclass klass) { // Arguments may not have been initialized, given ".class" syntax. @@ -624,7 +624,7 @@ java::lang::Class::isAssignableFrom (jclass klass) return _Jv_IsAssignableFrom (this, klass); } -inline jboolean +jboolean java::lang::Class::isInstance (jobject obj) { if (__builtin_expect (! obj || isPrimitive (), false)) @@ -633,7 +633,7 @@ java::lang::Class::isInstance (jobject obj) return _Jv_IsAssignableFrom (this, JV_CLASS (obj)); } -inline jboolean +jboolean java::lang::Class::isInterface (void) { return (accflags & java::lang::reflect::Modifier::INTERFACE) != 0; @@ -1235,7 +1235,7 @@ _Jv_AppendPartialITable (jclass klass, jclass iface, void **itable, for (jclass cl = klass; cl; cl = cl->getSuperclass()) { meth = _Jv_GetMethodLocal (cl, iface->methods[j].name, - iface->methods[j].signature); + iface->methods[j].signature); if (meth) break; @@ -1409,3 +1409,19 @@ java::lang::Class::getPrivateMethod (jstring name, JArray *param_types) JvThrow (new java::lang::NoSuchMethodException); } +// Perform a lightweight initialization of a Class object, for the +// purpose of creating the Class object of primitive types. + +void +java::lang::Class::initializePrim (jobject cname, jbyte sig, jint len, jobject avtable) +{ + using namespace java::lang::reflect; + + name = _Jv_makeUtf8Const ((char *) cname, -1); + accflags = Modifier::PUBLIC | Modifier::FINAL | Modifier::ABSTRACT; + method_count = sig; + size_in_bytes = len; + // We temporarily store `avtable' in the `vtable' field, so that the + // copy constructor can correctly invoke _Jv_FindArrayClass. + vtable = (_Jv_VTable *) avtable; +} -- cgit v1.2.3