From e046c56eee0e7308f8704c8c13aa6ca5230201f1 Mon Sep 17 00:00:00 2001 From: Andrew Haley Date: Fri, 16 Jun 2006 08:56:29 +0000 Subject: class.c (make_class_data): When using flag_indirect_classes, don't initialize the vtable of Class instances. 2006-06-16 Andrew Haley * class.c (make_class_data): When using flag_indirect_classes, don't initialize the vtable of Class instances. 2006-06-16 Andrew Haley * java/lang/natClassLoader.cc (_Jv_NewClassFromInitializer): Don't copy the whole Class instance from the initializer: instead, copy everything but the first word (the vtable pointer). Change prototype to (const char* class_initializer). (_Jv_RegisterNewClasses): Change prototype to (const char**). * java/lang/Class.h (_Jv_RegisterNewClasses): Change prototype to (const char**). From-SVN: r114714 --- gcc/java/ChangeLog | 5 +++++ gcc/java/class.c | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'gcc/java') diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 8758c77..98d90e6 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,8 @@ +2006-06-16 Andrew Haley + + * class.c (make_class_data): When using flag_indirect_classes, + don't initialize the vtable of Class instances. + 2006-06-09 Andrew Haley PR java/1305 diff --git a/gcc/java/class.c b/gcc/java/class.c index 972877d..10992b8 100644 --- a/gcc/java/class.c +++ b/gcc/java/class.c @@ -1863,10 +1863,12 @@ make_class_data (tree type) START_RECORD_CONSTRUCTOR (temp, object_type_node); PUSH_FIELD_VALUE (temp, "vtable", - build2 (PLUS_EXPR, dtable_ptr_type, - build1 (ADDR_EXPR, dtable_ptr_type, - class_dtable_decl), - dtable_start_offset)); + (flag_indirect_classes + ? null_pointer_node + : build2 (PLUS_EXPR, dtable_ptr_type, + build1 (ADDR_EXPR, dtable_ptr_type, + class_dtable_decl), + dtable_start_offset))); if (! flag_hash_synchronization) PUSH_FIELD_VALUE (temp, "sync_info", null_pointer_node); FINISH_RECORD_CONSTRUCTOR (temp); -- cgit v1.1