summaryrefslogtreecommitdiffstats
path: root/libjava/java/lang
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-28 22:45:57 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2003-10-28 22:45:57 +0000
commit51de1398b9ec6e2f28a17f671e1d9c86280dc5bf (patch)
tree01346d3d88fd9797848818d1d1f451003338ed3d /libjava/java/lang
parent3e4d5644e8fb662f389eac8085b4a364e8ba9652 (diff)
downloadppe42-gcc-51de1398b9ec6e2f28a17f671e1d9c86280dc5bf.tar.gz
ppe42-gcc-51de1398b9ec6e2f28a17f671e1d9c86280dc5bf.zip
* java/lang/natClass.cc (_Jv_LayoutVTableMethods): Always assign a
vtable slot for final methods. Add FIXME comment. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@73023 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang')
-rw-r--r--libjava/java/lang/natClass.cc9
1 files changed, 7 insertions, 2 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc
index ffac2c1ff53..155d1b997df 100644
--- a/libjava/java/lang/natClass.cc
+++ b/libjava/java/lang/natClass.cc
@@ -1835,6 +1835,12 @@ _Jv_LayoutVTableMethods (jclass klass)
if (! _Jv_isVirtualMethod (meth))
continue;
+ // FIXME: Must check that we don't override:
+ // - Package-private method where superclass is in different package.
+ // - Final or less-accessible declaration in superclass (check binary
+ // spec, do we allocate new vtable entry or put throw node in vtable?)
+ // - Static or private method in superclass.
+
if (superclass != NULL)
{
super_meth = _Jv_LookupDeclaredMethod (superclass, meth->name,
@@ -1843,8 +1849,7 @@ _Jv_LayoutVTableMethods (jclass klass)
if (super_meth)
meth->index = super_meth->index;
- else if (! (meth->accflags & java::lang::reflect::Modifier::FINAL)
- && ! (klass->accflags & java::lang::reflect::Modifier::FINAL))
+ else
meth->index = index++;
}
OpenPOWER on IntegriCloud