diff options
author | Tom Tromey <tromey@cygnus.com> | 1999-11-25 00:36:51 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 1999-11-25 00:36:51 +0000 |
commit | 93d455621810ca1fcb759fcb6cc4c237ba02a584 (patch) | |
tree | 35bb29ca80faf5479ebdd7ea3a0fbd2086f9fc89 /libjava/prims.cc | |
parent | fc39d3710887c5a0d560d93e29e8c222d40bf072 (diff) | |
download | gcc-93d455621810ca1fcb759fcb6cc4c237ba02a584.zip gcc-93d455621810ca1fcb759fcb6cc4c237ba02a584.tar.gz gcc-93d455621810ca1fcb759fcb6cc4c237ba02a584.tar.bz2 |
prims.cc (_Jv_NewObjectArray): Use _Jv_GetArrayElementFromElementType.
* prims.cc (_Jv_NewObjectArray): Use
_Jv_GetArrayElementFromElementType.
(_Jv_NewPrimArray): Likewise.
* java/lang/natObject.cc (clone): Use
_Jv_GetArrayElementFromElementType instead of sizeof.
* java/lang/natSystem.cc (arraycopy): Use
_Jv_GetArrayElementFromElementType.
* include/jvm.h (_Jv_GetArrayElementFromElementType): New
function.
From-SVN: r30655
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r-- | libjava/prims.cc | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc index 6b37d55..7f73047 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -328,16 +328,22 @@ _Jv_NewObjectArray (jsize count, jclass elementClass, jobject init) if (count < 0) JvThrow (new java::lang::NegativeArraySizeException); + JvAssert (! elementClass->isPrimitive ()); + + jobjectArray obj = NULL; + size_t size = (size_t) _Jv_GetArrayElementFromElementType (obj, + elementClass); + // Check for overflow. - if ((size_t) count > (SIZE_T_MAX - sizeof (__JArray)) / sizeof (jobject)) + if ((size_t) count > (SIZE_T_MAX - size) / sizeof (jobject)) JvThrow (no_memory); - size_t size = count * sizeof (jobject) + sizeof (__JArray); + size += count * sizeof (jobject); // FIXME: second argument should be "current loader" // jclass clas = _Jv_FindArrayClass (elementClass, 0); - jobjectArray obj = (jobjectArray) _Jv_AllocArray (size); + obj = (jobjectArray) _Jv_AllocArray (size); if (! obj) JvThrow (no_memory); obj->length = count; @@ -365,12 +371,15 @@ _Jv_NewPrimArray (jclass eltype, jint count) if (count < 0) JvThrow (new java::lang::NegativeArraySizeException ()); + JvAssert (eltype->isPrimitive ()); + jobject dummy = NULL; + size_t size = (size_t) _Jv_GetArrayElementFromElementType (dummy, eltype); + // Check for overflow. - if ((size_t) count > (SIZE_T_MAX - sizeof (__JArray)) / elsize) + if ((size_t) count > (SIZE_T_MAX - size) / elsize) JvThrow (no_memory); - __JArray *arr = (__JArray*) _Jv_AllocObj (sizeof (__JArray) - + elsize * count); + __JArray *arr = (__JArray*) _Jv_AllocObj (size + elsize * count); if (! arr) JvThrow (no_memory); arr->length = count; |