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