You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mt...@apache.org on 2009/04/17 15:42:07 UTC

svn commit: r766000 - in /commons/sandbox/runtime/trunk/src/main/native: include/acr_clazz.h shared/clazz.c shared/descriptor.c shared/pointer.c

Author: mturk
Date: Fri Apr 17 13:42:07 2009
New Revision: 766000

URL: http://svn.apache.org/viewvc?rev=766000&view=rev
Log:
Init Object[][] only if requested

Modified:
    commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h
    commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c
    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_clazz.h
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h?rev=766000&r1=765999&r2=766000&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h (original)
+++ commons/sandbox/runtime/trunk/src/main/native/include/acr_clazz.h Fri Apr 17 13:42:07 2009
@@ -67,9 +67,10 @@
  * Load and reference the class.
  * @param env Current JNI environment.
  * @param clazz Class to load.
+ * @param init_array Initialize Class[][] support.
  * @return ACR_SUCCESS on success.
  */
-ACR_DECLARE(int) ACR_LoadClass(JNIEnv *env, JAVA_C_ID *clazz);
+ACR_DECLARE(int) ACR_LoadClass(JNIEnv *env, JAVA_C_ID *clazz, int init_array);
 
 /**
  * UnLoad and dereference the class.

Modified: commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c
URL: http://svn.apache.org/viewvc/commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c?rev=766000&r1=765999&r2=766000&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/clazz.c Fri Apr 17 13:42:07 2009
@@ -173,11 +173,10 @@
         return NULL;
 }
 
-ACR_DECLARE(int) ACR_LoadClass(JNIEnv *_E, JAVA_C_ID *clazz)
+ACR_DECLARE(int) ACR_LoadClass(JNIEnv *_E, JAVA_C_ID *clazz, int init_array)
 {
     int rv = ACR_SUCCESS;
     jobject c;
-    char an[ACR_SBUFF_SIZ];
 
     if (clazz->i != NULL) {
         /* Already inited */
@@ -186,38 +185,35 @@
     if ((*_E)->EnsureLocalCapacity(_E, 3) < 0) {
         goto failed;
     }
-    /* Init class array */
-    sprintf(an, "L%s;", clazz->n);
+    /* Init class */
     c = (jobject)(*_E)->FindClass(_E, clazz->n);
     if ((*_E)->ExceptionCheck(_E) || c == NULL) {
-        fprintf(stderr, "Failed  1 %s %p\n", clazz->n, c);
-        fflush(stderr);
-
         goto failed;
     }
     clazz->i = (jclass)(*_E)->NewGlobalRef(_E, c);
     if ((*_E)->ExceptionCheck(_E) || clazz->i == NULL) {
         clazz->i = NULL;
-        fprintf(stderr, "Failed  2\n");
-        fflush(stderr);
         goto failed;
     }
     (*_E)->DeleteLocalRef(_E, c);
 
-    /* Init class array */
-    sprintf(an, "L%s;", clazz->n);
-    c = (jobject)(*_E)->FindClass(_E, an);
-    if ((*_E)->ExceptionCheck(_E) || c == NULL) {
-        fprintf(stderr, "Failed  3\n");
-        fflush(stderr);
-        goto failed;
+    if (init_array) {
+        char an[ACR_SBUFF_SIZ];
+        /* Init class array */
+        sprintf(an, "[L%s;", clazz->n);
+        c = (jobject)(*_E)->FindClass(_E, an);
+        if ((*_E)->ExceptionCheck(_E) || c == NULL) {
+            goto failed;
+        }
+        clazz->a = (jclass)(*_E)->NewGlobalRef(_E, c);
+        if ((*_E)->ExceptionCheck(_E) || clazz->a == NULL) {
+            clazz->a = NULL;
+            goto failed;
+        }
     }
-    clazz->a = (jclass)(*_E)->NewGlobalRef(_E, c);
-    if ((*_E)->ExceptionCheck(_E) || clazz->a == NULL) {
+    else {
+        /* We don't need Objec[][] arrays */
         clazz->a = NULL;
-        goto failed;
-        fprintf(stderr, "Failed  4\n");
-        fflush(stderr);
     }
     return rv;
 

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=766000&r1=765999&r2=766000&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/descriptor.c Fri Apr 17 13:42:07 2009
@@ -98,7 +98,7 @@
 {
     int rv;
 
-    if ((rv = ACR_LoadClass(_E, &_clazzn)) != ACR_SUCCESS)
+    if ((rv = ACR_LoadClass(_E, &_clazzn, 0)) != ACR_SUCCESS)
         return rv;
     J_LOAD_IFIELD(0000);
     J_LOAD_IFIELD(0001);
@@ -115,8 +115,8 @@
 
 ACR_DECLARE(jobjectArray) ACR_NewDescriptorArray(JNIEnv *_E, jsize len)
 {
-    if (_clazzn.a)
-        return (*_E)->NewObjectArray(_E, len, _clazzn.a, NULL);
+    if (_clazzn.i)
+        return (*_E)->NewObjectArray(_E, len, _clazzn.i, NULL);
     else
         return NULL;
 }

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=766000&r1=765999&r2=766000&view=diff
==============================================================================
--- commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c (original)
+++ commons/sandbox/runtime/trunk/src/main/native/shared/pointer.c Fri Apr 17 13:42:07 2009
@@ -86,7 +86,7 @@
 {
     int rv;
 
-    if ((rv = ACR_LoadClass(_E, &_clazzn)) != ACR_SUCCESS)
+    if ((rv = ACR_LoadClass(_E, &_clazzn, 0)) != ACR_SUCCESS)
         return rv;
     J_LOAD_IFIELD(0000);
     J_LOAD_IFIELD(0001);
@@ -102,8 +102,8 @@
 
 ACR_DECLARE(jobjectArray) ACR_NewPointerArray(JNIEnv *_E, jsize len)
 {
-    if (_clazzn.a)
-        return (*_E)->NewObjectArray(_E, len, _clazzn.a, NULL);
+    if (_clazzn.i)
+        return (*_E)->NewObjectArray(_E, len, _clazzn.i, NULL);
     else
         return NULL;
 }