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; }