[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-hotspot-runtime-dev
Subject: Re: RFR: JDK-8163808 fix vtable assertion and logging for older classfiles
From: Karen Kinnear <karen.kinnear () oracle ! com>
Date: 2016-08-19 16:07:32
Message-ID: 53412AFA-61E1-4A25-8B5A-1C9E6765E9E9 () oracle ! com
[Download RAW message or body]
Good timing. Fixed the copyright.
And you are right that I did not need the compiler directive - with jigsaw we don't \
need the -Dignore.symbol.file anymore because we handle this with module boundaries. \
jtreg added an -XaddExports:java.bae/jdk.internal.org.objectweb.asm=ALL_UNNAMED for \
me.
thanks,
Karen
> On Aug 16, 2016, at 10:41 AM, Coleen Phillimore <coleen.phillimore@oracle.com> \
> wrote:
>
> http://cr.openjdk.java.net/~acorn/8163808.hs.1/webrev/test/runtime/TransitiveOverrideCFV50/TransitiveOverrideCFV50.java.html \
> <http://cr.openjdk.java.net/~acorn/8163808.hs.1/webrev/test/runtime/TransitiveOverrideCFV50/TransitiveOverrideCFV50.java.html>
>
> One tiny thing in case you haven't pushed it yet. The copyright dates should just \
> say 2016, since it's a new test.
> Also, I'm not sure if you need @compile directive since I think jtreg adds \
> -Dignore.symbol.file for you.
> Thanks,
> Coleen
>
> On 8/12/16 3:28 PM, Karen Kinnear wrote:
> > Added a targeted test case for class files with different class file versions in \
> > the inheritance hierarchy.
> >
> > http://cr.openjdk.java.net/~acorn/8163808.hs.1/webrev/ \
> > <http://cr.openjdk.java.net/%7Eacorn/8163808.hs.1/webrev/>
> > thanks,
> > Karen
> >
> > > On Aug 12, 2016, at 1:46 PM, Coleen Phillimore <coleen.phillimore@oracle.com \
> > > <mailto:coleen.phillimore@oracle.com>> wrote:
> > >
> > >
> > > On 8/12/16 1:33 PM, Karen Kinnear wrote:
> > > > Coleen,
> > > >
> > > > Good catch - I will make that change.
> > > > Today this code is not called for arrays, but I totally appreciate you \
> > > > looking at the bigger picture and preparing for potential other uses.
> > > >
> > > >
> > > > Here is the updated lines:
> > > > KlassHandle vtklass_h = vt->klass();
> > > > Klass* vtklass = vtklass_h();
> > > > if (vtklass->is_instance_klass() &&
> > > > (InstanceKlass::cast(vtklass)->major_version() >= \
> > > > klassVtable::VTABLE_TRANSITIVE_OVERRIDE_VERSION)) { assert(method() != NULL, \
> > > > "must have set method"); }
> > > >
> > > This looks good.
> > > Thanks,
> > > Coleen
> > >
> > > > Thanks!
> > > > Karen
> > > >
> > > > > On Aug 12, 2016, at 10:47 AM, Coleen Phillimore \
> > > > > <coleen.phillimore@oracle.com <mailto:coleen.phillimore@oracle.com>> wrote: \
> > > > >
> > > > > http://cr.openjdk.java.net/~acorn/8163808.hs/webrev/src/share/vm/oops/klassVtable.cpp.udiff.html \
> > > > > <http://cr.openjdk.java.net/%7Eacorn/8163808.hs/webrev/src/share/vm/oops/klassVtable.cpp.udiff.html>
> > > > >
> > > > > void vtableEntry::verify(klassVtable* vt, outputStream* st) {
> > > > > NOT_PRODUCT(FlagSetting fs(IgnoreLockingAssertions, true));
> > > > > + KlassHandle vtklass_h = vt->klass();
> > > > > + Klass* vtklass = vtklass_h();
> > > > > + if (InstanceKlass::cast(vtklass)->major_version() >= \
> > > > > klassVtable::VTABLE_TRANSITIVE_OVERRIDE_VERSION) { assert(method() != NULL, \
> > > > > "must have set method"); + }
> > > > >
> > > > > I might be wrong but the vtable->klass() can be an ArrayKlass, so I think \
> > > > > you have to do:
> > > > > if (vtklass->oop_is_instance() && InstanceKlass::cast(vtklass) ...)
> > > > >
> > > > > InstanceKlass::cast makes this assertion. Otherwise, the code looks good.
> > > > >
> > > > > Coleen
> > > > >
> > > > > On 8/11/16 5:07 PM, Karen Kinnear wrote:
> > > > > > Please review:
> > > > > > https://bugs.openjdk.java.net/browse/JDK-8163808 \
> > > > > > <https://bugs.openjdk.java.net/browse/JDK-8163808>
> > > > > > http://cr.openjdk.java.net/~acorn/8163808.hs/webrev \
> > > > > > <http://cr.openjdk.java.net/%7Eacorn/8163808.hs/webrev>
> > > > > > Bug: For classfiles before class file version 51, JVMS did not support \
> > > > > > transitive over-ride behavior. Implementation needed to check this in \
> > > > > > three places, not just one. Vtable size calculation is only exact for \
> > > > > > later classfile versions.
> > > > > > Also fixed vtable logging output - since the method name-and-sig printing \
> > > > > > was changed to also print the holder's class name, we do not need to \
> > > > > > print the holder's class name separately - it was printing twice.
> > > > > > Testing: linux-x64-slowdebug
> > > > > > rbt hs-nightly-runtime.js
> > > > > > jck vm,lang, api.java.lang
> > > > > > small invocation tests
> > > > > >
> > > > > > thanks,
> > > > > > Karen
> > > > >
> > > >
> > >
> >
>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic