summaryrefslogtreecommitdiffstats
path: root/libjava/java/lang
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-31 23:50:37 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-05-31 23:50:37 +0000
commita8ba17fbbb676afc03507ee5541a76f5c24fad69 (patch)
tree4b05280dd0f1b3a4def3323eb6da74ef8279da45 /libjava/java/lang
parent5f526d197ac4455c61d87aa01da276f025183f8b (diff)
downloadppe42-gcc-a8ba17fbbb676afc03507ee5541a76f5c24fad69.tar.gz
ppe42-gcc-a8ba17fbbb676afc03507ee5541a76f5c24fad69.zip
* prims.cc (DECLARE_PRIM_TYPE): Define a vtable as well.
(_Jv_PrimClass): Set `methods' by calling _Jv_FindArrayClass. * include/jvm.h (struct _Jv_ArrayVTable): Declare. (NUM_OBJECT_METHODS): New define. * java/lang/natClassLoader.cc (_Jv_FindArrayClass): Added `array_vtable' parameter. Added assertion. * java/lang/Class.h (_Jv_FindArrayClass): Added `array_vtable' parameter. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34312 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang')
-rw-r--r--libjava/java/lang/Class.h3
-rw-r--r--libjava/java/lang/natClassLoader.cc12
2 files changed, 10 insertions, 5 deletions
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h
index 31f143ac577..9ea375976a4 100644
--- a/libjava/java/lang/Class.h
+++ b/libjava/java/lang/Class.h
@@ -251,7 +251,8 @@ private:
friend jclass _Jv_FindClassInCache (_Jv_Utf8Const *name,
java::lang::ClassLoader *loader);
friend jclass _Jv_FindArrayClass (jclass element,
- java::lang::ClassLoader *loader);
+ java::lang::ClassLoader *loader,
+ _Jv_VTable *array_vtable = 0);
friend jclass _Jv_NewClass (_Jv_Utf8Const *name, jclass superclass,
java::lang::ClassLoader *loader);
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index aa8782ddf0d..b4a9e49b71c 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -514,7 +514,8 @@ _Jv_NewClass (_Jv_Utf8Const *name, jclass superclass,
}
jclass
-_Jv_FindArrayClass (jclass element, java::lang::ClassLoader *loader)
+_Jv_FindArrayClass (jclass element, java::lang::ClassLoader *loader,
+ _Jv_VTable *array_vtable)
{
_Jv_Utf8Const *array_name;
int len;
@@ -561,6 +562,7 @@ _Jv_FindArrayClass (jclass element, java::lang::ClassLoader *loader)
// Note that `vtable_method_count' doesn't include the initial
// NULL slot.
+ JvAssert (ObjectClass.vtable_method_count == NUM_OBJECT_METHODS);
int dm_count = ObjectClass.vtable_method_count + 1;
// Create a new vtable by copying Object's vtable (except the
@@ -569,7 +571,11 @@ _Jv_FindArrayClass (jclass element, java::lang::ClassLoader *loader)
// GC.
int size = (sizeof (_Jv_VTable) +
((dm_count - 1) * sizeof (void *)));
- _Jv_VTable *vtable = (_Jv_VTable *) _Jv_AllocBytes (size);
+ _Jv_VTable *vtable;
+ if (array_vtable)
+ vtable = array_vtable;
+ else
+ vtable = (_Jv_VTable *) _Jv_AllocBytes (size);
vtable->clas = array_class;
memcpy (vtable->method, ObjectClass.vtable->method,
dm_count * sizeof (void *));
@@ -607,5 +613,3 @@ _Jv_FindArrayClass (jclass element, java::lang::ClassLoader *loader)
return array_class;
}
-
-
OpenPOWER on IntegriCloud