Need reviewer - @GenerateNativeHeader

Erik Joelsson erik.joelsson at oracle.com
Thu Jun 28 22:35:14 UTC 2012


Hello,

It's quite possible that the constants aren't needed. However, those 
files are currently on the list of files in the old build system that 
gets headers generated for them, and those headers are in turn included 
by native source files. The new annotation for automatically generating 
native headers is used by the new build (build-infra). We added the 
annotation to all java files that used to have headers generated for them.

It would be even better to check each of those java files and verify 
that the headers are actually needed in the native code, and remove the 
includes for those that aren't. We felt that was beyond the scope of the 
build-infra project.

/Erik

On 2012-06-28 14:53, Sergey Bylokhov wrote:
> Hi, Kelly.
> Because there is no constants that "are needed in the supporting JNI 
> code".
> For example in *LWLabelPeer.java:*
>     private static final int TEXT_XPAD = 5;
>     private static final int TEXT_YPAD = 1;
> These constants are really used in a nativ? code?
>
>
> 29.06.2012 01:38, Kelly O'Hair wrote:
>> Why do you say they are unnecessary?
>>
>> -kto
>>
>> On Jun 28, 2012, at 7:03 AM, Sergey Bylokhov wrote:
>>
>>> Hi, Kelly.
>>> Looks like changes in these files are unnecessary.
>>>
>>> |Cdiffs 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java.cdiff.html> 
>>> Udiffs 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java.udiff.html> 
>>> Sdiffs 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java.sdiff.html> 
>>> Frames 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java.frames.html> 
>>> Old 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java-.html> 
>>> New 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java.html> 
>>> Patch 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWLabelPeer.java.patch> 
>>> Raw 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/raw_files/new/src/macosx/classes/sun/lwawt/LWLabelPeer.java> 
>>> | *src/macosx/classes/sun/lwawt/LWLabelPeer.java*
>>>
>>>     4 lines changed: 4 ins; 0 del; 0 mod; 115 unchg
>>> |Cdiffs 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java.cdiff.html> 
>>> Udiffs 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java.udiff.html> 
>>> Sdiffs 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java.sdiff.html> 
>>> Frames 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java.frames.html> 
>>> Old 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java-.html> 
>>> New 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java.html> 
>>> Patch 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java.patch> 
>>> Raw 
>>> <http://cr.openjdk.java.net/%7Eohair/openjdk8/generateHeaders1/webrev/raw_files/new/src/macosx/classes/sun/lwawt/LWTextFieldPeer.java> 
>>> | *src/macosx/classes/sun/lwawt/LWTextFieldPeer.java*
>>>
>>>     4 lines changed: 4 ins; 0 del; 0 mod; 134 unchg
>>>
>>> 23.05.2012 05:14, Kelly O'Hair wrote:
>>>> 7170969: Add @GenerateNativeHeader to classes whose fields need to 
>>>> be exported for JNI
>>>> http://cr.openjdk.java.net/~ohair/openjdk8/generateHeaders1/webrev/
>>>>
>>>> The new build infrastructure wants to fully automate the generation 
>>>> of the JNI header files (running javah).
>>>> On classes that have "native" methods this is obvious, but class 
>>>> that only export constants, and whose constants
>>>> are needed in the JNI native code, we need to mark these classes as 
>>>> needing their native header file generated.
>>>>
>>>> This change is adding:
>>>>
>>>> import javax.tools.annotation.GenerateNativeHeader;
>>>>    /* No native methods here, but the constants are needed in the 
>>>> supporting JNI code */
>>>> @GenerateNativeHeader
>>>>
>>>> To any class without a native method, but needing to expose it's 
>>>> constants to the native code.
>>>>
>>>> -kto
>>>>
>>>
>>>
>>> -- 
>>> Best regards, Sergey.
>>
>
>




More information about the build-dev mailing list