[Java] Fix out-dated signatures of JNI methods (#2756)

1) Renamed the native JNI methods and some parameters of JNI methods. 
2) Fixed native JNI methods' signatures by `javah` tool.
3) Removed some useless native methods.
This commit is contained in:
Wang Qing
2018-08-30 17:59:29 +08:00
committed by Hao Chen
parent ba7efafa67
commit 514633456b
7 changed files with 212 additions and 275 deletions
@@ -33,22 +33,19 @@ class UniqueIdFromJByteArray {
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _init
* Signature: (Ljava/lang/String;[B[BZJ)J
* Method: nativeInit
* Signature: (Ljava/lang/String;[BZ[BZ)J
*/
JNIEXPORT jlong JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1init(JNIEnv *env,
jclass,
jstring sockName,
jbyteArray wid,
jbyteArray actorId,
jboolean isWorker,
jbyteArray driverId,
jlong numGpus,
jboolean useRaylet) {
// native private static long _init(String localSchedulerSocket,
// byte[] workerId, byte[] actorId, boolean isWorker, long numGpus);
UniqueIdFromJByteArray worker_id(env, wid);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeInit(
JNIEnv *env,
jclass,
jstring sockName,
jbyteArray workerId,
jboolean isWorker,
jbyteArray driverId,
jboolean useRaylet) {
UniqueIdFromJByteArray worker_id(env, workerId);
UniqueIdFromJByteArray driver_id(env, driverId);
const char *nativeString = env->GetStringUTFChars(sockName, JNI_FALSE);
auto client =
@@ -60,23 +57,20 @@ Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1init(JNIEnv *env,
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _submitTask
* Signature: (JLjava/nio/ByteBuffer;II)V
* Method: nativeSubmitTask
* Signature: (J[BLjava/nio/ByteBuffer;IIZ)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1submitTask(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeSubmitTask(
JNIEnv *env,
jclass,
jlong c,
jlong client,
jbyteArray cursorId,
jobject buff,
jobject taskBuff,
jint pos,
jint sz,
jint taskSize,
jboolean useRaylet) {
// task -> TaskInfo (with FlatBuffer)
// native private static void _submitTask(long client, /*Direct*/ByteBuffer
// task);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
std::vector<ObjectID> execution_dependencies;
if (cursorId != nullptr) {
@@ -85,37 +79,36 @@ Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1submitTask(
}
if (!useRaylet) {
TaskSpec *task =
reinterpret_cast<char *>(env->GetDirectBufferAddress(buff)) + pos;
reinterpret_cast<char *>(env->GetDirectBufferAddress(taskBuff)) + pos;
TaskExecutionSpec taskExecutionSpec =
TaskExecutionSpec(execution_dependencies, task, sz);
local_scheduler_submit(client, taskExecutionSpec);
TaskExecutionSpec(execution_dependencies, task, taskSize);
local_scheduler_submit(conn, taskExecutionSpec);
} else {
auto data =
reinterpret_cast<char *>(env->GetDirectBufferAddress(buff)) + pos;
ray::raylet::TaskSpecification task_spec(std::string(data, sz));
local_scheduler_submit_raylet(client, execution_dependencies, task_spec);
reinterpret_cast<char *>(env->GetDirectBufferAddress(taskBuff)) + pos;
ray::raylet::TaskSpecification task_spec(std::string(data, taskSize));
local_scheduler_submit_raylet(conn, execution_dependencies, task_spec);
}
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _getTaskTodo
* Signature: (J)[B
* Method: nativeGetTask
* Signature: (JZ)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1getTaskTodo(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeGetTask(
JNIEnv *env,
jclass,
jlong c,
jlong client,
jboolean useRaylet) {
// native private static ByteBuffer _getTaskTodo(long client);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
int64_t task_size = 0;
// TODO: handle actor failure later
TaskSpec *spec = !useRaylet
? local_scheduler_get_task(client, &task_size)
: local_scheduler_get_task_raylet(client, &task_size);
? local_scheduler_get_task(conn, &task_size)
: local_scheduler_get_task_raylet(conn, &task_size);
jbyteArray result;
result = env->NewByteArray(task_size);
@@ -133,166 +126,122 @@ Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1getTaskTodo(
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _computePutId
* Signature: (J[BI)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1computePutId(JNIEnv *env,
jclass,
jlong c,
jbyteArray tid,
jint index) {
// native private static byte[] _computePutId(long client, byte[] taskId, int
// putIndex);
UniqueIdFromJByteArray task(env, tid);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
ObjectID putId = task_compute_put_id(*task.PID, index);
local_scheduler_put_object(client, *task.PID, putId);
jbyteArray result;
result = env->NewByteArray(sizeof(ObjectID));
if (result == nullptr) {
return nullptr; /* out of memory error thrown */
}
// move from task spec structure to the java structure
env->SetByteArrayRegion(result, 0, sizeof(ObjectID),
reinterpret_cast<jbyte *>(&putId));
return result;
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _destroy
* Method: nativeDestroy
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1destroy(JNIEnv *,
jclass,
jlong c) {
// native private static void _destroy(long client);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
local_scheduler_disconnect_client(client);
LocalSchedulerConnection_free(client);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeDestroy(JNIEnv *,
jclass,
jlong client) {
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
local_scheduler_disconnect_client(conn);
LocalSchedulerConnection_free(conn);
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _task_done
* Signature: (J)V
* Method: nativeReconstructObjects
* Signature: (J[[BZ)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1task_1done(JNIEnv *,
jclass,
jlong c) {
// native private static void _task_done(long client);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
local_scheduler_task_done(client);
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _reconstruct_objects
* Signature: (J[B)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1reconstruct_1objects(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeReconstructObjects(
JNIEnv *env,
jclass,
jlong c,
jobjectArray oids,
jboolean fetch_only) {
// native private static void _reconstruct_objects(long client, byte[][]
// objectIds, boolean fetchOnly);
jlong client,
jobjectArray objectIds,
jboolean fetchOnly) {
std::vector<ObjectID> object_ids;
auto len = env->GetArrayLength(oids);
auto len = env->GetArrayLength(objectIds);
for (int i = 0; i < len; i++) {
jbyteArray oid = (jbyteArray) env->GetObjectArrayElement(oids, i);
UniqueIdFromJByteArray o(env, oid);
object_ids.push_back(*o.PID);
env->DeleteLocalRef(oid);
jbyteArray object_id_bytes =
static_cast<jbyteArray>(env->GetObjectArrayElement(objectIds, i));
UniqueIdFromJByteArray object_id(env, object_id_bytes);
object_ids.push_back(*object_id.PID);
env->DeleteLocalRef(object_id_bytes);
}
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
local_scheduler_reconstruct_objects(client, object_ids, fetch_only);
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
local_scheduler_reconstruct_objects(conn, object_ids, fetchOnly);
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _notify_unblocked
* Method: nativeNotifyUnblocked
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1notify_1unblocked(JNIEnv *,
jclass,
jlong c) {
// native private static void _notify_unblocked(long client);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
local_scheduler_notify_unblocked(client);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeNotifyUnblocked(
JNIEnv *,
jclass,
jlong client) {
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
local_scheduler_notify_unblocked(conn);
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _put_object
* Method: nativePutObject
* Signature: (J[B[B)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1put_1object(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativePutObject(
JNIEnv *env,
jclass,
jlong c,
jbyteArray tid,
jbyteArray oid) {
// native private static void _put_object(long client, byte[] taskId, byte[]
// objectId);
UniqueIdFromJByteArray o(env, oid), t(env, tid);
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
local_scheduler_put_object(client, *t.PID, *o.PID);
jlong client,
jbyteArray taskId,
jbyteArray objectId) {
UniqueIdFromJByteArray object_id(env, objectId), task_id(env, taskId);
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
local_scheduler_put_object(conn, *task_id.PID, *object_id.PID);
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: nativeWaitObject
* Signature: (J[[BIIZ)[Z
*/
JNIEXPORT jbooleanArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1waitObject(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeWaitObject(
JNIEnv *env,
jclass,
jlong c,
jobjectArray oids,
jint num_returns,
jint timeout_ms,
jboolean wait_local) {
jlong client,
jobjectArray objectIds,
jint numReturns,
jint timeoutMillis,
jboolean isWaitLocal) {
std::vector<ObjectID> object_ids;
auto len = env->GetArrayLength(oids);
auto len = env->GetArrayLength(objectIds);
for (int i = 0; i < len; i++) {
jbyteArray oid = (jbyteArray) env->GetObjectArrayElement(oids, i);
UniqueIdFromJByteArray o(env, oid);
object_ids.push_back(*o.PID);
env->DeleteLocalRef(oid);
jbyteArray object_id_bytes =
static_cast<jbyteArray>(env->GetObjectArrayElement(objectIds, i));
UniqueIdFromJByteArray object_id(env, object_id_bytes);
object_ids.push_back(*object_id.PID);
env->DeleteLocalRef(object_id_bytes);
}
auto client = reinterpret_cast<LocalSchedulerConnection *>(c);
auto conn = reinterpret_cast<LocalSchedulerConnection *>(client);
// Invoke wait.
std::pair<std::vector<ObjectID>, std::vector<ObjectID>> result =
local_scheduler_wait(client, object_ids, num_returns, timeout_ms,
static_cast<bool>(wait_local));
local_scheduler_wait(conn, object_ids, numReturns, timeoutMillis,
static_cast<bool>(isWaitLocal));
// Convert result to java object.
jboolean putValue = true;
jboolean put_value = true;
jbooleanArray resultArray = env->NewBooleanArray(object_ids.size());
for (uint i = 0; i < result.first.size(); ++i) {
for (uint j = 0; j < object_ids.size(); ++j) {
if (result.first[i] == object_ids[j]) {
env->SetBooleanArrayRegion(resultArray, j, 1, &putValue);
env->SetBooleanArrayRegion(resultArray, j, 1, &put_value);
break;
}
}
}
putValue = false;
put_value = false;
for (uint i = 0; i < result.second.size(); ++i) {
for (uint j = 0; j < object_ids.size(); ++j) {
if (result.second[i] == object_ids[j]) {
env->SetBooleanArrayRegion(resultArray, j, 1, &putValue);
env->SetBooleanArrayRegion(resultArray, j, 1, &put_value);
break;
}
}
@@ -300,18 +249,23 @@ Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1waitObject(
return resultArray;
}
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: nativeGenerateTaskId
* Signature: ([B[BI)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1generateTaskId(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeGenerateTaskId(
JNIEnv *env,
jclass,
jbyteArray did,
jbyteArray ptid,
jbyteArray driverId,
jbyteArray parentTaskId,
jint parent_task_counter) {
UniqueIdFromJByteArray o1(env, did);
ray::DriverID driver_id = *o1.PID;
UniqueIdFromJByteArray object_id1(env, driverId);
ray::DriverID driver_id = *object_id1.PID;
UniqueIdFromJByteArray o2(env, ptid);
ray::TaskID parent_task_id = *o2.PID;
UniqueIdFromJByteArray object_id2(env, parentTaskId);
ray::TaskID parent_task_id = *object_id2.PID;
ray::TaskID task_id =
ray::GenerateTaskId(driver_id, parent_task_id, parent_task_counter);
@@ -9,85 +9,61 @@ extern "C" {
#endif
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _init
* Signature: (Ljava/lang/String;[B[BZJ)J
* Method: nativeInit
* Signature: (Ljava/lang/String;[BZ[BZ)J
*/
JNIEXPORT jlong JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1init(JNIEnv *,
jclass,
jstring,
jbyteArray,
jbyteArray,
jboolean,
jbyteArray,
jlong,
jboolean);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeInit(JNIEnv *,
jclass,
jstring,
jbyteArray,
jboolean,
jbyteArray,
jboolean);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _submitTask
* Signature: (JLjava/nio/ByteBuffer;II)V
* Method: nativeSubmitTask
* Signature: (J[BLjava/nio/ByteBuffer;IIZ)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1submitTask(JNIEnv *,
jclass,
jlong,
jbyteArray,
jobject,
jint,
jint,
jboolean);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeSubmitTask(JNIEnv *,
jclass,
jlong,
jbyteArray,
jobject,
jint,
jint,
jboolean);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _getTaskTodo
* Signature: (J)[B
* Method: nativeGetTask
* Signature: (JZ)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1getTaskTodo(JNIEnv *,
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeGetTask(JNIEnv *,
jclass,
jlong,
jboolean);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _computePutId
* Signature: (J[BI)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1computePutId(JNIEnv *,
jclass,
jlong,
jbyteArray,
jint);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _destroy
* Method: nativeDestroy
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1destroy(JNIEnv *,
jclass,
jlong);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeDestroy(JNIEnv *,
jclass,
jlong);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _task_done
* Signature: (J)V
* Method: nativeReconstructObjects
* Signature: (J[[BZ)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1task_1done(JNIEnv *,
jclass,
jlong);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _reconstruct_objects
* Signature: (J[B)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1reconstruct_1objects(
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeReconstructObjects(
JNIEnv *,
jclass,
jlong,
@@ -96,51 +72,53 @@ Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1reconstruct_1objects(
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _notify_unblocked
* Method: nativeNotifyUnblocked
* Signature: (J)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1notify_1unblocked(JNIEnv *,
jclass,
jlong);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeNotifyUnblocked(
JNIEnv *,
jclass,
jlong);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _put_object
* Method: nativePutObject
* Signature: (J[B[B)V
*/
JNIEXPORT void JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1put_1object(JNIEnv *,
jclass,
jlong,
jbyteArray,
jbyteArray);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativePutObject(JNIEnv *,
jclass,
jlong,
jbyteArray,
jbyteArray);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _waitObject
* Method: nativeWaitObject
* Signature: (J[[BIIZ)[Z
*/
JNIEXPORT jbooleanArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1waitObject(JNIEnv *,
jclass,
jlong,
jobjectArray,
jint,
jint,
jboolean);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeWaitObject(JNIEnv *,
jclass,
jlong,
jobjectArray,
jint,
jint,
jboolean);
/*
* Class: org_ray_spi_impl_DefaultLocalSchedulerClient
* Method: _generateTaskId
* Method: nativeGenerateTaskId
* Signature: ([B[BI)[B
*/
JNIEXPORT jbyteArray JNICALL
Java_org_ray_spi_impl_DefaultLocalSchedulerClient__1generateTaskId(JNIEnv *,
jclass,
jbyteArray,
jbyteArray,
jint);
Java_org_ray_spi_impl_DefaultLocalSchedulerClient_nativeGenerateTaskId(
JNIEnv *,
jclass,
jbyteArray,
jbyteArray,
jint);
#ifdef __cplusplus
}