Author: mturk
Date: Sat Apr 18 10:51:19 2009
New Revision: 766294

URL: http://svn.apache.org/viewvc?rev=766294&view=rev
Log:
Use field pointer macros instead duplicating jint/jlong code

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h
    commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
    commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c

Modified: commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h?rev=766294&r1=766293&r2=766294&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h 
(original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_private.h Sat Apr 
18 10:51:19 2009
@@ -128,7 +128,7 @@
 /* Presume utf32 fits into utf16.
  * TODO: Figure out more optimised way of doing this.
  */
-#define RETURN_JWSTR(V)  ACR_NewJavaStringW(_E, (V))
+#define RETURN_JWSTR(V)  return ACR_NewJavaStringW(_E, (V))
 
 #endif
 
@@ -379,6 +379,29 @@
         else     (*_E)->SetStaticBooleanField(_E, _clazzn.i, _f##I##n.i, 
JNI_FALSE);    \
     } else (void)(0)
 
+#if CC_SIZEOF_VOIDP == 8
+
+#define IFIELD_PTR  "J"
+#define GET_IFIELD_P(I, O)  \
+    _f##I##n.i ? (*_E)->GetLongField(_E, (O), _f##I##n.i) : 0
+
+#define SET_IFIELD_P(I, O, V)  \
+    if (_f##I##n.i) {                                                       \
+        (*_E)->SetLongField(_E, (O), _f##I##n.i, (jlong)(V));               \
+    } else (void)(0)
+
+#else  /* CC_SIZEOF_VOIDP == 4 */
+
+#define IFIELD_PTR  "I"
+#define GET_IFIELD_P(I, O)  \
+    _f##I##n.i ? (*_E)->GetIntField(_E, (O), _f##I##n.i) : 0
+
+#define SET_IFIELD_P(I, O, V)  \
+    if (_f##I##n.i) {                                                       \
+        (*_E)->SetIntField(_E, (O), _f##I##n.i, (jint)(V));                 \
+    } else (void)(0)
+
+#endif /* CC_SIZEOF_VOIDP == 8 */
 
 #define CALL_METHOD1(I, O, V)  \
     if (_m##I##n.i) {                                                       \

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c?rev=766294&r1=766293&r2=766294&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c Sat Apr 
18 10:51:19 2009
@@ -36,24 +36,6 @@
     ACR_CLASS_PATH "Descriptor64"
 };
 
-J_DECLARE_F_ID(0000) = {
-    NULL,
-    "IHANDLE",
-    "I"
-};
-
-J_DECLARE_F_ID(0001) = {
-    NULL,
-    "PHANDLE",
-    "J"
-};
-
-J_DECLARE_F_ID(0002) = {
-    NULL,
-    "CLEANUP",
-    "J"
-};
-
 J_DECLARE_M_ID(0000) = {
     NULL,
     "<init>",
@@ -68,6 +50,14 @@
     ACR_CLASS_PATH "Descriptor32"
 };
 
+J_DECLARE_M_ID(0000) = {
+    NULL,
+    "<init>",
+    "(III)V"
+};
+
+#endif
+
 J_DECLARE_F_ID(0000) = {
     NULL,
     "IHANDLE",
@@ -77,23 +67,15 @@
 J_DECLARE_F_ID(0001) = {
     NULL,
     "PHANDLE",
-    "I"
+    IFIELD_PTR
 };
 
 J_DECLARE_F_ID(0002) = {
     NULL,
     "CLEANUP",
-    "I"
+    IFIELD_PTR
 };
 
-J_DECLARE_M_ID(0000) = {
-    NULL,
-    "<init>",
-    "(III)V"
-};
-
-#endif
-
 ACR_CLASS_LDEF(Descriptor)
 {
     int rv;
@@ -125,22 +107,13 @@
 {
     if (_clazzn.i && _m0000n.i) {
         acr_descriptor_callback_fn_t *callback;
-        jint  i = GET_IFIELD_I(0000, _O);
-#if CC_SIZEOF_VOIDP == 8
-        jlong p = GET_IFIELD_J(0001, _O);
-        jlong c = GET_IFIELD_J(0002, _O);
+        jint  i  = GET_IFIELD_I(0000, _O);
+        jniptr p = GET_IFIELD_P(0001, _O);
+        jniptr c = GET_IFIELD_P(0002, _O);
 
         if (p) {
-            SET_IFIELD_J(0001, _O, 0);
+            SET_IFIELD_P(0001, _O, 0);
         }
-#else
-        jint p  = GET_IFIELD_I(0001, _O);
-        jint c  = GET_IFIELD_I(0002, _O);
-
-        if (p) {
-            SET_IFIELD_I(0001, _O, 0);
-        }
-#endif
         if (i >= 0) {
             SET_IFIELD_I(0000, _O, -1);
         }
@@ -162,16 +135,10 @@
 {
     if (_clazzn.i && _m0000n.i) {
         acr_descriptor_callback_fn_t *callback;
-        jint  i = GET_IFIELD_I(0000, _O);
-#if CC_SIZEOF_VOIDP == 8
-        jlong p = GET_IFIELD_J(0001, _O);
-        jlong c = GET_IFIELD_J(0002, _O);
-
-#else
-        jint  p = GET_IFIELD_I(0001, _O);
-        jint  c = GET_IFIELD_I(0002, _O);
+        jint  i  = GET_IFIELD_I(0000, _O);
+        jniptr p = GET_IFIELD_P(0001, _O);
+        jniptr c = GET_IFIELD_P(0002, _O);
 
-#endif
         callback = (acr_descriptor_callback_fn_t *)((acr_ptr_t)c);
         if (callback) {
             int rc = (*callback)(ACR_DESC_SYNC, i, (void *)((acr_ptr_t)p));
@@ -204,28 +171,16 @@
 {
     if (_clazzn.i && _m0000n.i) {
         acr_descriptor_callback_fn_t *callback;
-        jint  i = GET_IFIELD_I(0000, _O);
-#if CC_SIZEOF_VOIDP == 8
-        jlong p = GET_IFIELD_J(0001, _O);
-        jlong c = GET_IFIELD_J(0002, _O);
+        jint   i = GET_IFIELD_I(0000, _O);
+        jniptr p = GET_IFIELD_P(0001, _O);
+        jniptr c = GET_IFIELD_P(0002, _O);
 
         if (p) {
-            SET_IFIELD_J(0001, _O, 0);
+            SET_IFIELD_P(0001, _O, 0);
         }
         if (c) {
-            SET_IFIELD_J(0002, _O, 0);
+            SET_IFIELD_P(0002, _O, 0);
         }
-#else
-        jint  p = GET_IFIELD_I(0001, _O);
-        jint  c = GET_IFIELD_I(0002, _O);
-
-        if (p) {
-            SET_IFIELD_I(0001, _O, 0);
-        }
-        if (c) {
-            SET_IFIELD_I(0002, _O, 0);
-        }
-#endif
         if (i >= 0) {
             SET_IFIELD_I(0000, _O, -1);
         }
@@ -251,11 +206,7 @@
 ACR_DECLARE(void *) ACR_DescriptorGetPtr(ACR_JNISTDARGS)
 {
     if (_clazzn.i && _m0000n.i) {
-#if CC_SIZEOF_VOIDP == 8
-        jlong p = GET_IFIELD_J(0001, _O);
-#else
-        jint  p = GET_IFIELD_I(0001, _O);
-#endif
+        jniptr p = GET_IFIELD_P(0001, _O);
         return (void *)((acr_ptr_t)p);
     }
     else {
@@ -278,11 +229,7 @@
 ACR_DECLARE(int) ACR_DescriptorSetPtr(ACR_JNISTDARGS, void *p)
 {
     if (_clazzn.i && _m0000n.i) {
-#if CC_SIZEOF_VOIDP == 8
-        SET_IFIELD_J(0001, _O, (jlong)((acr_ptr_t)p));
-#else
-        SET_IFIELD_I(0001, _O, (jint)((acr_ptr_t)p));
-#endif
+        SET_IFIELD_P(0001, _O, (jniptr)((acr_ptr_t)p));
         if ((*_E)->ExceptionCheck(_E)) {
             return ACR_EGENERAL;
         }

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c
URL: 
http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c?rev=766294&r1=766293&r2=766294&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c Sat Apr 18 
10:51:19 2009
@@ -36,18 +36,6 @@
     ACR_CLASS_PATH "Pointer64"
 };
 
-J_DECLARE_F_ID(0000) = {
-    NULL,
-    "POINTER",
-    "J"
-};
-
-J_DECLARE_F_ID(0001) = {
-    NULL,
-    "CLEANUP",
-    "J"
-};
-
 J_DECLARE_M_ID(0000) = {
     NULL,
     "<init>",
@@ -62,25 +50,26 @@
     ACR_CLASS_PATH "Pointer32"
 };
 
+J_DECLARE_M_ID(0000) = {
+    NULL,
+    "<init>",
+    "(II)V"
+};
+
+#endif
+
 J_DECLARE_F_ID(0000) = {
     NULL,
     "POINTER",
-    "I"
+    IFIELD_PTR
 };
 
 J_DECLARE_F_ID(0001) = {
     NULL,
     "CLEANUP",
-    "I"
+    IFIELD_PTR
 };
 
-J_DECLARE_M_ID(0000) = {
-    NULL,
-    "<init>",
-    "(II)V"
-};
-
-#endif
 
 ACR_CLASS_LDEF(Pointer)
 {
@@ -112,21 +101,12 @@
 {
     if (_clazzn.i && _m0000n.i) {
         acr_pointer_cleanup_fn_t *cleanup;
-#if CC_SIZEOF_VOIDP == 8
-        jlong h = GET_IFIELD_J(0000, _O);
-        jlong c = GET_IFIELD_J(0001, _O);
-
-        if (h) {
-            SET_IFIELD_J(0000, _O, 0);
-        }
-#else
-        jint h  = GET_IFIELD_I(0000, _O);
-        jint c  = GET_IFIELD_I(0001, _O);
+        jniptr h = GET_IFIELD_P(0000, _O);
+        jniptr c = GET_IFIELD_P(0001, _O);
 
         if (h) {
-            SET_IFIELD_I(0000, _O, 0);
+            SET_IFIELD_P(0000, _O, 0);
         }
-#endif
         cleanup = (acr_pointer_cleanup_fn_t *)((acr_ptr_t)c);
         if (cleanup) {
             int rc = (*cleanup)((void *)((acr_ptr_t)h));
@@ -157,27 +137,15 @@
 {
     if (_clazzn.i && _m0000n.i) {
         acr_pointer_cleanup_fn_t *cleanup;
-#if CC_SIZEOF_VOIDP == 8
-        jlong h = GET_IFIELD_J(0000, _O);
-        jlong c = GET_IFIELD_J(0001, _O);
-
-        if (h) {
-            SET_IFIELD_J(0000, _O, 0);
-        }
-        if (c) {
-            SET_IFIELD_J(0001, _O, 0);
-        }
-#else
-        jint h  = GET_IFIELD_I(0000, _O);
-        jint c  = GET_IFIELD_I(0001, _O);
+        jniptr h = GET_IFIELD_P(0000, _O);
+        jniptr c = GET_IFIELD_P(0001, _O);
 
         if (h) {
-            SET_IFIELD_I(0000, _O, 0);
+            SET_IFIELD_P(0000, _O, 0);
         }
         if (c) {
-            SET_IFIELD_I(0001, _O, 0);
+            SET_IFIELD_P(0001, _O, 0);
         }
-#endif
         cleanup = (acr_pointer_cleanup_fn_t *)((acr_ptr_t)c);
         if (cleanup) {
             int rc = (*cleanup)((void *)((acr_ptr_t)h));
@@ -199,11 +167,7 @@
 ACR_DECLARE(void *) ACR_PointerGet(ACR_JNISTDARGS)
 {
     if (_clazzn.i && _m0000n.i) {
-#if CC_SIZEOF_VOIDP == 8
-        jlong h = GET_IFIELD_J(0000, _O);
-#else
-        jint h  = GET_IFIELD_I(0000, _O);
-#endif
+        jniptr h = GET_IFIELD_P(0000, _O);
         return (void *)((acr_ptr_t)h);
     }
     else {
@@ -215,11 +179,7 @@
 ACR_DECLARE(int) ACR_PointerSet(ACR_JNISTDARGS, void *p)
 {
     if (_clazzn.i && _m0000n.i) {
-#if CC_SIZEOF_VOIDP == 8
-        SET_IFIELD_J(0000, _O, (jlong)((acr_ptr_t)p));
-#else
-        SET_IFIELD_I(0000, _O, (jint)((acr_ptr_t)p));
-#endif
+        SET_IFIELD_P(0000, _O, (jniptr)((acr_ptr_t)p));
         if ((*_E)->ExceptionCheck(_E)) {
             return ACR_EGENERAL;
         }


Reply via email to