You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mnemonic.apache.org by ga...@apache.org on 2016/10/26 21:06:57 UTC
incubator-mnemonic git commit: MNEMONIC-146: valHandler would receive
the address of its processing node
Repository: incubator-mnemonic
Updated Branches:
refs/heads/master 85c0758f8 -> 2cec8e9b1
MNEMONIC-146: valHandler would receive the address of its processing node
Project: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/commit/2cec8e9b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/tree/2cec8e9b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/diff/2cec8e9b
Branch: refs/heads/master
Commit: 2cec8e9b1d1262c6eec86585e3feb19be0cdde49
Parents: 85c0758
Author: Wang, Gang(Gary) <ga...@intel.com>
Authored: Wed Oct 26 09:49:31 2016 -0700
Committer: Wang, Gang(Gary) <ga...@intel.com>
Committed: Wed Oct 26 14:00:14 2016 -0700
----------------------------------------------------------------------
.../src/main/native/common.c | 23 +++++++++++++-------
.../src/main/native/common.h | 4 ++--
...computingservice_internal_PrintServiceImpl.c | 9 ++++----
3 files changed, 22 insertions(+), 14 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/2cec8e9b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
index 0516743..cdc0df0 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.c
@@ -303,7 +303,8 @@ inline long to_p(JNIEnv* env, struct NValueInfo *nvinfo, void *e) {
return -1L;
}
-void iterMatrix(JNIEnv* env, struct NValueInfo *nvinfo, size_t dims[], long hdls[],
+void iterMatrix(JNIEnv* env, struct NValueInfo *nvinfo,
+ size_t dims[], long *itmaddrs[], long hdls[],
size_t dimidx, valueHandler valhandler) {
void *addr = NULL;
long curoff = (nvinfo->frames + dimidx)->nextoff;
@@ -311,9 +312,11 @@ void iterMatrix(JNIEnv* env, struct NValueInfo *nvinfo, size_t dims[], long hdls
long curnlsz = (nvinfo->frames + dimidx)->nlvlsz;
if (dimidx < nvinfo->framessz - 1) {
while(0L != hdls[dimidx]) {
- hdls[dimidx + 1] = *(long*)(to_e(env, nvinfo, hdls[dimidx]) + curnloff);
- iterMatrix(env, nvinfo, dims, hdls, dimidx + 1, valhandler);
- hdls[dimidx] = *(long*)(to_e(env, nvinfo, hdls[dimidx]) + curoff);
+ itmaddrs[dimidx + 1] = (long*)(to_e(env, nvinfo, hdls[dimidx]) + curnloff);
+ hdls[dimidx + 1] = *itmaddrs[dimidx + 1];
+ iterMatrix(env, nvinfo, dims, itmaddrs, hdls, dimidx + 1, valhandler);
+ itmaddrs[dimidx] = (long*)(to_e(env, nvinfo, hdls[dimidx]) + curoff);
+ hdls[dimidx] = *itmaddrs[dimidx];
++dims[dimidx];
}
dims[dimidx] = 0;
@@ -321,14 +324,15 @@ void iterMatrix(JNIEnv* env, struct NValueInfo *nvinfo, size_t dims[], long hdls
if (-1L != curoff) {
while(0L != hdls[dimidx]) {
addr = to_e(env, nvinfo, hdls[dimidx]) + curnloff;
- valhandler(env, dims, dimidx + 1, addr, curnlsz, nvinfo->dtype);
- hdls[dimidx] = *(long*)(to_e(env, nvinfo, hdls[dimidx]) + curoff);
+ valhandler(env, dims, dimidx, itmaddrs, addr, curnlsz, nvinfo->dtype);
+ itmaddrs[dimidx] = (long*)(to_e(env, nvinfo, hdls[dimidx]) + curoff);
+ hdls[dimidx] = *itmaddrs[dimidx];
++dims[dimidx];
}
dims[dimidx] = 0;
} else {
addr = to_e(env, nvinfo, hdls[dimidx]) + curnloff;
- valhandler(env, dims, dimidx, addr, curnlsz, nvinfo->dtype);
+ valhandler(env, dims, dimidx, itmaddrs, addr, curnlsz, nvinfo->dtype);
}
}
}
@@ -338,14 +342,17 @@ int handleValueInfo(JNIEnv* env, struct NValueInfo *nvinfo, valueHandler valhand
return -1;
}
size_t dims[nvinfo->framessz];
+ long *itmaddrs[nvinfo->framessz];
long hdls[nvinfo->framessz];
size_t i, di = 0;
for (i = 0; i < nvinfo->framessz; ++i) {
dims[i] = 0;
+ itmaddrs[i] = NULL;
hdls[i] = 0L;
}
+ itmaddrs[di] = &nvinfo->handler;
hdls[di] = nvinfo->handler;
- iterMatrix(env, nvinfo, dims, hdls, 0, valhandler);
+ iterMatrix(env, nvinfo, dims, itmaddrs, hdls, 0, valhandler);
return 0;
}
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/2cec8e9b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
index fe7a3a7..be3149a 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/common.h
@@ -80,8 +80,8 @@ struct NValueInfo {
/**
* a value handler to be callback for each value of a matrix
*/
-typedef void (*valueHandler)(JNIEnv* env, size_t dims[], size_t dimsz,
- void *addr, size_t sz, int dtype);
+typedef void (*valueHandler)(JNIEnv* env, size_t dims[], size_t dimidx,
+ long *itmaddrs[], void *addr, size_t sz, int dtype);
/**
* construct a list of native value info structure from Java array object.
http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/2cec8e9b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
----------------------------------------------------------------------
diff --git a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
index 31a7631..0209210 100644
--- a/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
+++ b/mnemonic-computing-services/mnemonic-utilities-service/src/main/native/org_apache_mnemonic_service_computingservice_internal_PrintServiceImpl.c
@@ -26,15 +26,16 @@
* a customized handler as value handler.
* It handles would be used to iteratively callback for each value of a value matrix
*/
-void valHandler(JNIEnv* env, size_t dims[], size_t dimsz,
- void *addr, size_t sz, int dtype) {
+void valHandler(JNIEnv* env, size_t dims[], size_t dimidx,
+ long *itmaddrs[], void *addr, size_t sz, int dtype) {
size_t i;
- if (0 == dims[dimsz - 1]) {
+ if (0 == dims[dimidx]) {
printf("\n");
}
- for (i = 0; i < dimsz; ++i) {
+ for (i = 0; i <= dimidx; ++i) {
printf("[%zu]", dims[i]);
}
+ printf(" <%p> ", itmaddrs[dimidx]);
switch(dtype) {
case DURABLE_BOOLEAN:
printf(" %s, ", (0 == *(char*)addr ? "T" : "F"));