On Mon, 31 May 2021 06:06:37 GMT, Jaroslav Tulach 
<github.com+26887752+jaroslavtul...@openjdk.org> wrote:

>> This PR exposes runtime invisible annotations via `Class.getAnnotation` when 
>> `-XX:+PreserveAllAnnotations` option is passed to the JVM.
>> 
>> Existing `-XX:+PreserveAllAnnotations` option can be very useful for code 
>> that needs to access annotations with `RetentionPolicy.CLASS` without the 
>> need to parse the .class files manually. While the 
>> RuntimeInvisibleAnnotations are kept in the runtime, they are not visible 
>> via java.lang.reflect API. I assume that's just an omission.
>> 
>> This PR provides a new test and a fix to make `Class.getAnnotation(...)` 
>> useful when `-XX:+PreserveAllAnnotations` option is on.
>
> Jaroslav Tulach has refreshed the contents of this pull request, and previous 
> commits have been removed. The incremental views will show differences 
> compared to the previous content of the PR.

There is [support for parsing class files in 
Graal](https://github.com/oracle/graal/blob/89e4cfc7ae/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/classfile/ClassfileBytecodeProvider.java#L45-L47)
 which exists to avoids all bytecode preprocessing and instrumentation that may 
be performed on the VM internal bytecode representation. This is only done for 
trusted bytecode that comes from Graal classes (e.g. [Java source code 
snippets](https://github.com/oracle/graal/blob/89e4cfc7ae/compiler/src/org.graalvm.compiler.replacements/src/org/graalvm/compiler/replacements/AllocationSnippets.java#L50-L72)
 used to express compiler (sub)graphs as Java source code).

-------------

PR: https://git.openjdk.java.net/jdk/pull/4245

Reply via email to