This is the mail archive of the
java-discuss@sources.redhat.com
mailing list for the Java project.
Re: New C++ ABI: patches.
Alexandre Petit-Bianco writes:
> I can see that the vtbl is ajusted before being stored:
It looks like standard behavior with the new C++ compiler. The
computation takes place in cp/class.c:dfs_accumulate_vtbl_inits. The
write back takes place at the end of cp/init.c:expand_virtual_init().
I think we only see its here because it's the only time we're given a
chance to write a constructor in C++.
Since we don't want the C++ compiler to adjust the vtable, we can
reverse things manually. Or better, change the C++ compiler so that it
doesn't do that in certain cases. Here's a patch (Mark, what do you
think?) This let me pass the `int.class' problem. My sanity tests are
now all OK on x86/linux. I haven't tried recompiling the entire
runtime with it yet, but the build is running. I'm going to tests this
on PPC too. So if I can get Alpha to work, we could switch pretty soon
IMO. I don't think issues like the mangling of Unicode characters are
going to be resolved soon, we'll go with what we have.
./A
2001-01-12 Alexandre Petit-Bianco <apbianco@cygnus.net>
* cp/init.c: (dfs_accumulate_vtbl_inits): Not accumulation for
Java type.
Index: class.c
===================================================================
RCS file: /cvs/gcc/egcs/gcc/cp/class.c,v
retrieving revision 1.355
diff -u -p -r1.355 class.c
--- class.c 2001/01/10 23:06:26 1.355
+++ class.c 2001/01/13 01:28:18
@@ -7156,7 +7156,10 @@ dfs_accumulate_vtbl_inits (binfo, orig_b
{
tree inits = NULL_TREE;
- if (BINFO_NEW_VTABLE_MARKED (orig_binfo, t))
+ if (BINFO_NEW_VTABLE_MARKED (orig_binfo, t)
+ // Don't accumulate for Java types. Java object ctors written in
+ // C++ shouldn't fix the vtbl.
+ && !TYPE_FOR_JAVA (BINFO_TYPE (binfo)))
{
tree vtbl;
tree index;