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"));