diff options
author | Bryce McKinlay <bryce@mckinlay.net.nz> | 2003-10-28 22:45:57 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2003-10-28 22:45:57 +0000 |
commit | 6ac8b2b1875676cf49c653fd7c01b6460a7ebf97 (patch) | |
tree | 01346d3d88fd9797848818d1d1f451003338ed3d /libjava/java | |
parent | e2d0915cc9b500b89fa38572d23bdd69338fdbc7 (diff) | |
download | gcc-6ac8b2b1875676cf49c653fd7c01b6460a7ebf97.zip gcc-6ac8b2b1875676cf49c653fd7c01b6460a7ebf97.tar.gz gcc-6ac8b2b1875676cf49c653fd7c01b6460a7ebf97.tar.bz2 |
natClass.cc (_Jv_LayoutVTableMethods): Always assign a vtable slot for final methods.
* java/lang/natClass.cc (_Jv_LayoutVTableMethods): Always assign a
vtable slot for final methods. Add FIXME comment.
From-SVN: r73023
Diffstat (limited to 'libjava/java')
-rw-r--r-- | libjava/java/lang/natClass.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/libjava/java/lang/natClass.cc b/libjava/java/lang/natClass.cc index ffac2c1..155d1b99 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++; } |