RFR: 8004823: Add VM support for type annotation reflection

Joel Borggrén-Franck joel.franck at oracle.com
Thu Dec 27 04:45:28 PST 2012


Thanks for the review Coleen!

cheers
/Joel

On Dec 20, 2012, at 4:47 PM, Coleen Phillimore <coleen.phillimore at oracle.com> wrote:

> 
> Looks good, Joel.
> Thanks,
> Coleen
> 
> On 12/18/2012 05:40 PM, David Holmes wrote:
>> Thumbs up.
>> 
>> David
>> 
>> On 19/12/2012 3:05 AM, Joel Borggrén-Franck wrote:
>>> New webrev up:
>>> 
>>> http://cr.openjdk.java.net/~jfranck/8004823/webrev.v7/
>>> 
>>> - I had to rename the field name for the type annotation byte[] in
>>> Field, Constructor and Method.
>>> 
>>> Also fixed:
>>> 
>>> - I fixed the mapfile that got reindented.
>>> - Added back a comment that I accidentally removed.
>>> 
>>> cheers
>>> /Joel
>>> 
>>> On 12/17/2012 05:47 PM, Joel Borggrén-Franck wrote:
>>>> Hi,
>>>> 
>>>> Here is a webrev for adding VM support for type annotation reflection:
>>>> http://cr.openjdk.java.net/~jfranck/8004823/webrev.v4/
>>>> 
>>>> Type annotations are coming with JDK 8, the proposed language changes
>>>> can be found from here:
>>>> http://openjdk.java.net/projects/type-annotations/
>>>> 
>>>> Since runtime visible type annotations probably won't be that common I
>>>> have tried to minimise overhead when there are no type annotations.
>>>> This is done by adding a pointer to a type annotation Annotations
>>>> instance from the regular annotations Annotations instance, see
>>>> annotations.hpp. This means that if there are no runtime visible
>>>> annotations there is no additional overhead with this patch since no
>>>> Annotations instance will be allocated at all. If there is runtime
>>>> visible annotations but no runtime visible type annotations there is
>>>> an additional overhead of 1 pointer with this patch. If you use type
>>>> annotations there will also be storage overhead, but that is to be
>>>> expected.
>>>> 
>>>> This patch also fixes that Annotations were never deallocated when
>>>> InstanceKlass::deallocate_contents() were called.
>>>> 
>>>> There is currently no redefineClass support for type annotations. This
>>>> will be added later. In order avoid ship possibly broken bytes to
>>>> java-land, type annotations are nulled out and deallocated after a
>>>> redefineClass.
>>>> 
>>>> This patch also exports a new method from jvm.h,
>>>> JVM_GetClassTypeAnnotations, so map files are updated. Build-dev are
>>>> included for review.
>>>> 
>>>> Testing done:
>>>> - vm.quick.testlis both on b67 and on a jdk that is patched with the
>>>> new fields to Field, Method and Constructor
>>>> - jprt full forrest build
>>>> - jdk_lang in both b67 and the patched jdk
>>>> - manual tests that we get the correct bytes out from the VM. These
>>>> tests can be added once some more changes have propagated from the jdk
>>>> repo
>>>> 
>>>> FYI, The initial set of jdk changes are being reviewed on
>>>> core-libs-dev:
>>>> http://mail.openjdk.java.net/pipermail/core-libs-dev/2012-December/013016.html 
>>>> 
>>>> 
>>>> cheers
>>>> /Joel
>>>> 
> 



More information about the hotspot-dev mailing list