aboutsummaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>1999-11-25 00:36:51 +0000
committerTom Tromey <tromey@gcc.gnu.org>1999-11-25 00:36:51 +0000
commit93d455621810ca1fcb759fcb6cc4c237ba02a584 (patch)
tree35bb29ca80faf5479ebdd7ea3a0fbd2086f9fc89 /libjava/prims.cc
parentfc39d3710887c5a0d560d93e29e8c222d40bf072 (diff)
downloadgcc-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.cc21
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;