[OpenJDK 2D-Dev] Review Request: JDK-8000406 - change files using @GenerateNativeHeader to use @Native
dan.xu at oracle.com
Wed Apr 3 14:53:41 UTC 2013
Thank you for your good comments. Please see my answers below.
On 04/02/2013 12:37 PM, Phil Race wrote:
> The addition of @Native to various lines in SunGraphics2D.java look to
> have pushed them >80 chars
> and it looks to me as if previously the author took some care to limit
> it. Moreover the indentation
> of the comment block `on lines 127-130 is no longer aligned.
> Maybe it would be easier for that case to put the annotation on the
> line above as in
> static final int FOO ...
I use a program to automatically scan and modify files. And the length
program is not noticed. I will fix the format issue.
> Otherwise looks OK, looks like you found files that had
> @GenerateNativeHeaders that
> didn't need it and cleaned those up, and in native sources removed
> unneeded header
> file imports too.
> I do have a background question about how it works.
> There is an implication here that only the constants with @native might
> be included in generated header files. Is that true ?
> Whereas if a class has native method declarations, then it doesn't need
> these annotations, but you get all constants in the header file. Is
> that right ?
If a class has native method declarations, then we don't need add
anything. It will automatically generate the header file with all constants.
If a class contains no native methods but have constants interested by
native codes, then we need annotations. Previously, we use
@GenerateNativeHeader. But now we need replace them with @Native.
@Native works on the field level. Only constants annotated with @native
will be added as an entry in the generated native header file. (But we
currently have a bug on this. It generates a header file with all
constants no matter a constant has @Native or not. It will be fixed soon.)
In my change, I only add @Native annotation to constants interested by
native codes. And if no such kind of constants and native methods
declared, the fix does the clean-up and removes unnecessary header
> On 4/1/13 3:16 PM, Dan Xu wrote:
>> Hi All,
>> In this fix, I have updated files in JDK libraries to use @Native
>> annotation instead of @GenerateNativeHeader to mark classes that
>> contain no native methods but constants used by native codes.
>> @GenerateNativeHeader was added earlier in the development for
>> JDK8."This has proved problematic for some core classes with respect
>> to Jigsaw, since the use of such an annotation creates a compile-time
>> dependency from the base module to the module containing javax.tools,
>> and the base module should not have any dependencies." After
>> switching to @Native annotation, the dependency problem will be
>> solved as java.lang.annotation.Native is in the proposed base module.
>> In addition, the annotation has been refined not to be on the class
>> level but on the constants themselves, which also makes the generated
>> header files much cleaner.
>> This effort is part of JDK-8000404. After jdk libraries uptaking the
>> annotation changes, @GenerateNativeHeader annotation will be removed
>> CCC: http://ccc.us.oracle.com/8000404
>> webrev: http://cr.openjdk.java.net/~dxu/8000406/webrev/
>> Thanks for your feedback!
More information about the core-libs-dev