diff options
author | Andrew Haley <aph@redhat.com> | 2006-04-24 15:33:16 +0000 |
---|---|---|
committer | Andrew Haley <aph@gcc.gnu.org> | 2006-04-24 15:33:16 +0000 |
commit | 621ae65dcd01b01cbf1b4723d55653c8c1c7855b (patch) | |
tree | 843ad6f8c55847b78d8168eb919c303e362e94d6 /gcc/java/jvgenmain.c | |
parent | 5204d06d82d16eb89d871797cf4ff082f4fa9526 (diff) | |
download | gcc-621ae65dcd01b01cbf1b4723d55653c8c1c7855b.zip gcc-621ae65dcd01b01cbf1b4723d55653c8c1c7855b.tar.gz gcc-621ae65dcd01b01cbf1b4723d55653c8c1c7855b.tar.bz2 |
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
Diffstat (limited to 'gcc/java/jvgenmain.c')
-rw-r--r-- | gcc/java/jvgenmain.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/gcc/java/jvgenmain.c b/gcc/java/jvgenmain.c index f340279..e0cddc0 100644 --- a/gcc/java/jvgenmain.c +++ b/gcc/java/jvgenmain.c @@ -127,11 +127,11 @@ main (int argc, char **argv) } fprintf (stream, " 0\n};\n\n"); - fprintf (stream, "extern int %s;\n", mangled_classname); fprintf (stream, "int main (int argc, const char **argv)\n"); fprintf (stream, "{\n"); fprintf (stream, " _Jv_Compiler_Properties = props;\n"); - fprintf (stream, " JvRunMain (&%s, argc, argv);\n", mangled_classname); + fprintf (stream, " extern void *%s;\n", mangled_classname); + fprintf (stream, " JvRunMain (%s, argc, argv);\n", mangled_classname); fprintf (stream, "}\n"); if (stream != stdout && fclose (stream) != 0) { @@ -153,16 +153,16 @@ do_mangle_classname (const char *string) for (ptr = string; *ptr; ptr++ ) { - if (ptr[0] == '.') + if (*ptr == '.') { - append_gpp_mangled_name (&ptr [-count], count); + append_gpp_mangled_name (ptr - count, count); count = 0; } else count++; } append_gpp_mangled_name (&ptr [-count], count); - obstack_grow (mangle_obstack, "6class$E", 8); + obstack_grow (mangle_obstack, "7class$$E", strlen ("7class$$E")); obstack_1grow (mangle_obstack, '\0'); return obstack_finish (mangle_obstack); } |