aboutsummaryrefslogtreecommitdiff
path: root/libjava/boehm.cc
diff options
context:
space:
mode:
authorBryce McKinlay <bryce@albatross.co.nz>2001-01-08 23:28:56 +0000
committerBryce McKinlay <bryce@gcc.gnu.org>2001-01-08 23:28:56 +0000
commit5bb11b2e20b893361704d444fcf3a02de7f0bc89 (patch)
treebe919e8f9daa4b9caa6045e085c18aa82e8c4a09 /libjava/boehm.cc
parent5bab9296f5a87f0bf7c8785b87d92db9a3b5ecf9 (diff)
downloadgcc-5bb11b2e20b893361704d444fcf3a02de7f0bc89.zip
gcc-5bb11b2e20b893361704d444fcf3a02de7f0bc89.tar.gz
gcc-5bb11b2e20b893361704d444fcf3a02de7f0bc89.tar.bz2
In gcc/java:
* class.c (make_class_data): Push initial value for "arrayclass". * decl.c (init_decl_processing): Add new class field "arrayclass". In libjava: * java/lang/Class.h (_Jv_InitClass): Use __builtin_expect. (_Jv_NewArrayClass): Renamed from _Jv_FindArrayClass. (_Jv_GetArrayClass): New inline function. (arrayclass): New field. * prims.cc (_Jv_NewObjectArray): Use _Jv_GetArrayClass. Don't use _Jv_GetArrayElementFromElementType. (_Jv_NewPrimArray): Ditto. (_Jv_PrimClass constructor): Initialize "depth", "ancestors", and "idt" for completeness. Initialze "arrayclass" using _Jv_NewArrayClass. Set Modifier::ABSTRACT. * java/lang/natClassLoader.cc (_Jv_NewClass): Initialize "arrayclass". (_Jv_NewArrayClass): Renamed from _Jv_FindArrayClass. Now void. Now synchronized. Array classes are now referenced from elementClass->arrayclass. Don't use _Jv_FindClassInCache. Set array classes' accessibility flags correctly. Optimize so that all array classes share the same IDT. * java/lang/reflect/natArray.cc (newInstance): Use _Jv_GetArrayClass. * java/lang/reflect/natMethod.cc (_Jv_GetTypesFromSignature): Ditto. * java/lang/natClass.cc (_getFields): Increment offset. Prevent fields in superclasses from overwriting classes own fields. (_Jv_IsAssignableFrom): Check for NULL source idt instead of calling Modifier::isAbstract(). (null_idt): New static field. (_Jv_PrepareConstantTimeTables): Optimize case where class implements no interfaces. (_Jv_IndexOf): Made inline. * boehm.cc (_Jv_MarkObj): Mark "arrayclass" field. From-SVN: r38808
Diffstat (limited to 'libjava/boehm.cc')
-rw-r--r--libjava/boehm.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/libjava/boehm.cc b/libjava/boehm.cc
index 877d97c..49b4eab 100644
--- a/libjava/boehm.cc
+++ b/libjava/boehm.cc
@@ -225,6 +225,8 @@ _Jv_MarkObj (void *addr, void *msp, void *msl, void * /* env */)
}
p = (ptr_t) c->loader;
MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cBlabel);
+ p = (ptr_t) c->arrayclass;
+ MAYBE_MARK (p, mark_stack_ptr, mark_stack_limit, c, cDlabel);
#ifdef INTERPRETER
if (_Jv_IsInterpretedClass (c))