lang.c (java_init): Handle flag_indirect_classes.
2006-04-21 Andrew Haley <aph@redhat.com> * lang.c (java_init): Handle flag_indirect_classes. * jvgenmain.c: Use "class$$" instead of "class$". * mangle.c (java_mangle_decl): Accept RECORD_TYPEs sw well as DECLs. (mangle_class_field): Special case "class$$" as well as "class$". * constants.c (build_ref_from_constant_pool): If flag_indirect_classes, generate a ref into the heap. * decl.c (constants_field_decl_node, constants_data_field_decl_node): New. * class.c (build_static_class_ref): New. (build_classdollar_field): Factor out from build_class_ref(). (make_field_value): Handle static fields in heap. (make_class_data): Make sure we get a static ref to class. Make class initializer const if flag_indirect_classes. (register_class): Build a class_ref for initialization if flag_indirect_classes. (emit_indirect_register_classes): New. 2006-04-21 Andrew Haley <aph@redhat.com> * include/execution.h (struct _Jv_CompiledEngine): Define for compiled classes. * java/lang/natClassLoader.cc (_Jv_RegisterClasses): Call _Jv_RegisterLibForGc. (_Jv_RegisterClasses_Counted): Likewise. (_Jv_NewClassFromInitializer): New. (_Jv_RegisterNewClasses): New. * sources.am: Regenerate. * boehm.cc (_Jv_GC_has_static_roots): new. (_Jv_InitGC): Call GC_register_has_static_roots_callback. (filename_node, find_file, _Jv_print_gc_store, new_node, _Jv_GC_has_static_roots, _Jv_RegisterLibForGc): New. * scripts/makemake.tcl: Add -fno-indirect-classes. * Makefile.in: Regenerate. * link.cc (resolve_pool_entry): Allocate constant pool. Allocate fields. From-SVN: r113224
This commit is contained in:
parent
5204d06d82
commit
621ae65dcd
19 changed files with 526 additions and 89 deletions
|
@ -39,6 +39,9 @@ extern "Java"
|
|||
|
||||
// We declare these here to avoid including gcj/cni.h.
|
||||
extern "C" void _Jv_InitClass (jclass klass);
|
||||
extern "C" jclass _Jv_NewClassFromInitializer
|
||||
(const jclass class_initializer);
|
||||
extern "C" void _Jv_RegisterNewClasses (void **classes);
|
||||
extern "C" void _Jv_RegisterClasses (const jclass *classes);
|
||||
extern "C" void _Jv_RegisterClasses_Counted (const jclass *classes,
|
||||
size_t count);
|
||||
|
@ -286,7 +289,7 @@ public:
|
|||
JArray<jclass> *getClasses (void);
|
||||
|
||||
java::lang::ClassLoader *getClassLoader (void);
|
||||
|
||||
public:
|
||||
// This is an internal method that circumvents the usual security
|
||||
// checks when getting the class loader.
|
||||
java::lang::ClassLoader *getClassLoaderInternal (void)
|
||||
|
@ -427,6 +430,8 @@ private:
|
|||
int method_idx);
|
||||
|
||||
friend void ::_Jv_InitClass (jclass klass);
|
||||
friend java::lang::Class* ::_Jv_NewClassFromInitializer (const jclass class_initializer);
|
||||
friend void _Jv_RegisterNewClasses (void **classes);
|
||||
|
||||
friend _Jv_Method* ::_Jv_LookupDeclaredMethod (jclass, _Jv_Utf8Const *,
|
||||
_Jv_Utf8Const*, jclass *);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue