On 4/03/2019 9:30 pm, Andrew Leonard wrote:
Hi,
This bug raised a missmatch between the Java and JNI definition for a
native method, where Java specifies "boolean" and the JNI jint. Which is
right, should they match?
https://bugs.openjdk.java.net/browse/JDK-8217735
Old javah generates jboolean
> cat Native.java
public class Native {
public native boolean isTrue(boolean b);
}
> cat Native.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Native */
#ifndef _Included_Native
#define _Included_Native
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: Native
* Method: isTrue
* Signature: (Z)Z
*/
JNIEXPORT jboolean JNICALL Java_Native_isTrue
(JNIEnv *, jobject, jboolean);
#ifdef __cplusplus
}
#endif
#endif
David
-----
One part of the JVM spec that confuses me a bit is:
2.3.4 The boolean Type
Although the Java Virtual Machine defines a boolean type,
it only provides very limited support for it.
There are no Java Virtual Machine instructions solely dedicated
to operations on boolean values. Instead, expressions in the Java
programming language that operate on boolean values are
compiled to use values of the Java Virtual Machine int data type.
Thanks
Andrew
Andrew Leonard
Java Runtimes Development
IBM Hursley
IBM United Kingdom Ltd
Phone internal: 245913, external: 01962 815913
internet email: [email protected]
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU