Class.h (isInterface): Move implementation from natClass.cc.
* java/lang/Class.h (isInterface): Move implementation from natClass.cc. Declare inline. (Class): Add default constructor. * java/lang/Object.h: Update comments. * java/lang/natClass.cc (initializeClass): Use _Jv_InitClass to initialize superclass, saving a call if super is already initialized. From-SVN: r39091
This commit is contained in:
parent
61a2490705
commit
607adf67a0
4 changed files with 22 additions and 13 deletions
|
@ -174,7 +174,8 @@ public:
|
|||
|
||||
jboolean isAssignableFrom (jclass cls);
|
||||
jboolean isInstance (jobject obj);
|
||||
jboolean isInterface (void)
|
||||
|
||||
inline jboolean isInterface (void)
|
||||
{
|
||||
return (accflags & java::lang::reflect::Modifier::INTERFACE) != 0;
|
||||
}
|
||||
|
@ -196,16 +197,17 @@ public:
|
|||
// finalization
|
||||
void finalize ();
|
||||
|
||||
Class () {};
|
||||
|
||||
// This constructor is used to create Class object for the primitive
|
||||
// types.
|
||||
Class (jobject cname, jbyte sig, jint len, jobject array_vtable) {
|
||||
|
||||
// types. See prims.cc.
|
||||
Class (jobject cname, jbyte sig, jint len, jobject array_vtable)
|
||||
{
|
||||
using namespace java::lang::reflect;
|
||||
_Jv_Utf8Const *_Jv_makeUtf8Const (char *s, int len);
|
||||
|
||||
// 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.
|
||||
// C++ ctors set the vtbl pointer to point at an offset inside the vtable
|
||||
// object. That doesn't work for Java, so this hack adjusts it back.
|
||||
void *p = ((void **)this)[0];
|
||||
((void **)this)[0] = (void *)((char *)p-2*sizeof (void *));
|
||||
|
||||
|
|
|
@ -16,15 +16,13 @@ details. */
|
|||
#include <gcj/javaprims.h>
|
||||
|
||||
// This class is mainly here as a kludge to get G++ to allocate two
|
||||
// extra entries in the vtable. We will use them to store data. This
|
||||
// allows us to support the new C++ ABI.
|
||||
|
||||
// extra entries in each vtable.
|
||||
struct _JvObjectPrefix
|
||||
{
|
||||
protected:
|
||||
// New ABI Compatibility Dummy, #1 and 2.
|
||||
virtual void nacd_1 (void) {};
|
||||
virtual void nacd_2 (void) {};
|
||||
virtual void nacd_1 (void) {}; // This slot really contains the Class pointer.
|
||||
virtual void nacd_2 (void) {}; // Actually the GC bitmap marking descriptor.
|
||||
};
|
||||
|
||||
class java::lang::Object : public _JvObjectPrefix
|
||||
|
|
|
@ -732,7 +732,7 @@ java::lang::Class::initializeClass (void)
|
|||
{
|
||||
try
|
||||
{
|
||||
superclass->initializeClass ();
|
||||
_Jv_InitClass (superclass);
|
||||
}
|
||||
catch (java::lang::Throwable *except)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue