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/07/08 00:14:40 UTC

incubator-mnemonic git commit: MNEMONIC-74: Create utility native functions for handler mapping

Repository: incubator-mnemonic
Updated Branches:
  refs/heads/master a39d10970 -> 9f24eccea


MNEMONIC-74: Create utility native functions for handler mapping


Project: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/commit/9f24ecce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/tree/9f24ecce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/diff/9f24ecce

Branch: refs/heads/master
Commit: 9f24eccea830be36c92c6d33ccd4d9d230270cb6
Parents: a39d109
Author: Wang, Gang(Gary) <ga...@intel.com>
Authored: Thu Jul 7 17:00:03 2016 -0700
Committer: Wang, Gang(Gary) <ga...@intel.com>
Committed: Thu Jul 7 17:12:53 2016 -0700

----------------------------------------------------------------------
 .../src/main/native/common.c                    | 54 ++++++++++++++++----
 .../src/main/native/common.h                    |  6 ++-
 2 files changed, 50 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/9f24ecce/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 fc63ccc..82387d8 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
@@ -117,7 +117,7 @@ struct NValueInfo *constructNValInfo(JNIEnv* env, jobject vinfoobj) {
           itmarrlen = (*env)->GetArrayLength(env, itmarr);
           if (NULL != itmarr && TRANSTABLEITEMLEN == itmarrlen) {
             itms = (*env)->GetLongArrayElements(env, itmarr, NULL);
-            (ret->transtable + i)->hdlbase = addr_from_java(itms[0]);
+            (ret->transtable + i)->hdlbase = itms[0];
             (ret->transtable + i)->size = itms[1];
             (ret->transtable + i)->base = addr_from_java(itms[2]);
             (*env)->ReleaseLongArrayElements(env, itmarr, itms, JNI_ABORT);
@@ -213,20 +213,20 @@ void printNValueInfos(struct NValueInfo **nvalinfos, size_t sz) {
   struct NValueInfo *itm;
   struct transitem *ttitm;
   struct frameitem *fitm;
-  printf("\n--- Native ValueInfo List, Addr:%p, Size: %d ---\n", nvalinfos, sz);
+  printf("\n--- Native ValueInfo List, Addr:%p, Size: %zu ---\n", nvalinfos, sz);
   if (NULL != nvalinfos) {
     for(idx = 0; idx < sz; ++idx) {
       itm = *(nvalinfos + idx);
-      printf("** Item %2d, Addr:%p ** \n", idx, itm);
+      printf("** Item %2zu, Addr:%p ** \n", idx, itm);
       if (NULL != itm) {
-        printf("Handler:%p, DType Value:%d\n", itm->handler, itm->dtype);
-        printf(">> TransTable: Addr:%p, Size:%d <<\n", itm->transtable, itm->transtablesz);
+        printf("Handler:%ld, DType Value:%d\n", itm->handler, itm->dtype);
+        printf(">> TransTable: Addr:%p, Size:%zu <<\n", itm->transtable, itm->transtablesz);
         if (NULL != itm->transtable && itm->transtablesz > 0) {
           for (i = 0; i < itm->transtablesz; ++i) {
             ttitm = (itm->transtable + i);
-            printf("%2d)", i);
+            printf("%2zu)", i);
             if (NULL != ttitm) {
-              printf("hdlbase:%p, size:%ld, base:%p\n",
+              printf("hdlbase:%ld, size:%ld, base:%p\n",
                   ttitm->hdlbase, ttitm->size, ttitm->base);
             } else {
               printf("NULL\n");
@@ -235,11 +235,11 @@ void printNValueInfos(struct NValueInfo **nvalinfos, size_t sz) {
         } else {
           printf("NULL\n");
         }
-        printf(">> Frames: Addr:%p, Size:%d <<\n", itm->frames, itm->framessz);
+        printf(">> Frames: Addr:%p, Size:%zu <<\n", itm->frames, itm->framessz);
         if (NULL != itm->frames && itm->framessz > 0) {
           for (i = 0; i < itm->framessz; ++i) {
             fitm = (itm->frames + i);
-            printf("%2d)", i);
+            printf("%2zu)", i);
             if (NULL != fitm) {
               printf("nextoff:%ld, nextsz:%ld, nlvloff:%ld, nlvlsz:%ld\n",
                   fitm->nextoff, fitm->nextsz, fitm->nlvloff, fitm->nlvlsz);
@@ -268,3 +268,39 @@ jlongArray constructJLongArray(JNIEnv* env, long arr[], size_t sz) {
   (*env)->SetLongArrayRegion(env, ret, 0, sz, arr);
   return ret;
 }
+
+inline void *to_e(JNIEnv* env, struct NValueInfo *nvinfo, long p) {
+  size_t i;
+  struct transitem * ti;
+  if (NULL != nvinfo || NULL != nvinfo->transtable) {
+    for (i = 0; i < nvinfo->transtablesz; ++i) {
+      ti = nvinfo->transtable + i;
+      if (p >= ti->hdlbase && p < ti->size) {
+        return ti->base + p;
+      }
+    }
+    throw(env, "No item found in Translate Table.");
+  } else {
+    throw(env, "NValueInfo or Translate Table is NULL.");
+  }
+  return NULL;
+}
+
+inline long to_p(JNIEnv* env, struct NValueInfo *nvinfo, void *e) {
+  size_t i;
+  struct transitem * ti;
+  if (NULL != nvinfo || NULL != nvinfo->transtable) {
+    for (i = 0; i < nvinfo->transtablesz; ++i) {
+      ti = nvinfo->transtable + i;
+      if (e >= ti->base && e < ti->base + ti->size) {
+        return e - ti->base;
+      }
+    }
+    throw(env, "No item found in Translate Table.");
+  } else {
+    throw(env, "NValueInfo or Translate Table is NULL.");
+  }
+  return -1L;
+}
+
+

http://git-wip-us.apache.org/repos/asf/incubator-mnemonic/blob/9f24ecce/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 ce4809d..75feef7 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
@@ -43,7 +43,7 @@ void* addr_from_java(jlong addr);
 jlong addr_to_java(void* p);
 
 struct transitem {
-  void* hdlbase;
+  long hdlbase;
   long size;
   void* base;
 };
@@ -71,6 +71,10 @@ void destructNValueInfos(struct NValueInfo **nvalinfos, size_t sz);
 
 jlongArray constructJLongArray(JNIEnv* env, long arr[], size_t sz);
 
+inline void *to_e(JNIEnv* env, struct NValueInfo *nvinfo, long p);
+
+inline long to_p(JNIEnv* env, struct NValueInfo *nvinfo, void *e);
+
 #ifdef __cplusplus
 }
 #endif