RFR [XS] JDK-8039184: JNI Spec missing documentation on calling default methods
David Simms
david.simms at oracle.com
Mon Apr 28 09:07:35 UTC 2014
Thanks Dan,
Sorry the mailing list stole my HTML, but the webrev was still reasonable.
Thanks for the reviews...
/David
On 04/25/2014 10:08 PM, Daniel D. Daugherty wrote:
> This one got a little confusing because it looks like old and new
> got mushed together (interleaved). Once I figured out which parts
> were old and new, the review became easier.
>
> Thumbs up.
>
> Dan
>
>
>
>
> On 4/25/14 9:20 AM, David Simms wrote:
>> JDK-8039184 <https://bugs.openjdk.java.net/browse/JDK-8039184>: JNI
>> Spec missing documentation on calling default methods
>>
>> Minor addition to the JNI Specification
>> <http://docs.oracle.com/javase/8/docs/technotes/guides/jni/spec/jniTOC.html>:
>>
>> Web review here: http://cr.openjdk.java.net/~dsimms/jnispec/8039184/
>> <http://cr.openjdk.java.net/%7Edsimms/jnispec/8039184/>
>>
>> *Old Text*
>> *New Text*
>>
>>
>> GetMethodID
>>
>> |jmethodID GetMethodID(JNIEnv *env, jclass clazz,
>> const char *name, const char *sig);|
>>
>> Returns the method ID for an instance (nonstatic) method of a class
>> or interface. The method may be defined in one of the|clazz|'s
>> superclasses and inherited by|clazz|. The method is determined by its
>> name and signature.
>>
>> |GetMethodID()|causes an uninitialized class to be initialized.
>>
>> To obtain the method ID of a constructor, supply|<init>|as the method
>> name and|void|(|V|) as the return type.
>>
>>
>>
>>
>> GetMethodID
>>
>> |jmethodID GetMethodID(JNIEnv *env, jclass clazz,
>> const char *name, const char *sig);|
>>
>> Returns the method ID for an instance (nonstatic) method of a class
>> or interface. The method may be defined in one of the|clazz|'s
>> supertypes and inherited by|clazz|. The method is determined by its
>> name and signature.
>>
>> |GetMethodID()|causes an uninitialized class to be initialized.
>>
>> To obtain the method ID of a constructor, supply|<init>|as the method
>> name and|void|(|V|) as the return type.
>>
>>
>> CallNonvirtual<type>Method Routines, CallNonvirtual<type>MethodA
>> Routines, CallNonvirtual<type>MethodV Routines
>>
>> /NativeType//CallNonvirtual<type>Method/|(JNIEnv *env, jobject obj,
>> jclass clazz, jmethodID methodID, ...);|
>>
>> /NativeType//CallNonvirtual<type>MethodA/|(JNIEnv *env, jobject obj,
>> jclass clazz, jmethodID methodID, const jvalue *args);|
>>
>> /NativeType//CallNonvirtual<type>MethodV/|(JNIEnv *env, jobject obj,
>> jclass clazz, jmethodID methodID, va_list args);|
>>
>> These families of operations invoke an instance (nonstatic) method on
>> a Java object, according to the specified class and method ID.
>> The|methodID|argument must be obtained by calling|GetMethodID||()|on
>> the class|clazz|.
>>
>> The/CallNonvirtual<type>Method/families of routines and
>> the/Call<type>Method/families of routines are
>> different./Call<type>Method/routines invoke the method based on the
>> class of the object, while/CallNonvirtual<type>Method/routines invoke
>> the method based on the class, designated by the|clazz|parameter,
>> from which the method ID is obtained. The method ID must be obtained
>> from the real class of the object or from one of its superclasses.
>>
>>
>>
>>
>> CallNonvirtual<type>Method Routines, CallNonvirtual<type>MethodA
>> Routines, CallNonvirtual<type>MethodV Routines
>>
>> /NativeType//CallNonvirtual<type>Method/|(JNIEnv *env, jobject obj,
>> jclass clazz, jmethodID methodID, ...);|
>>
>> /NativeType//CallNonvirtual<type>MethodA/|(JNIEnv *env, jobject obj,
>> jclass clazz, jmethodID methodID, const jvalue *args);|
>>
>> /NativeType//CallNonvirtual<type>MethodV/|(JNIEnv *env, jobject obj,
>> jclass clazz, jmethodID methodID, va_list args);|
>>
>> These families of operations invoke an instance (nonstatic) method on
>> a Java object, according to the specified class and method ID.
>> The|methodID|argument must be obtained by calling|GetMethodID||()|on
>> the class|clazz|.
>>
>> The/CallNonvirtual<type>Method/families of routines and
>> the/Call<type>Method/families of routines are
>> different./Call<type>Method/routines invoke the method based on the
>> class or interface of the object,
>> while/CallNonvirtual<type>Method/routines invoke the method based on
>> the class, designated by the|clazz|parameter, from which the method
>> ID is obtained. The method ID must be obtained from the real class of
>> the object or from one of its supertypes.
>>
>> /CallNonvirtual<type>Method/routines are the mechanism for
>> invoking/"default interface methods"/introduced in Java 8.
>>
>
More information about the hotspot-dev
mailing list