diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-11-24 21:02:36 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-11-24 21:02:36 +0000 |
commit | ad86a903a28cb259d55d9abc95c5e091acc92143 (patch) | |
tree | d4054b9ccee889a0365a1284dd577cf7e13c7d0c /libjava/prims.cc | |
parent | 81d87b4e64fe9c7a72791a70e680df452cfc9e37 (diff) | |
download | gcc-ad86a903a28cb259d55d9abc95c5e091acc92143.tar.gz |
prims.cc (_Jv_NewObjectArray): Use palcement new to create array.
* prims.cc (_Jv_NewObjectArray): Use palcement new to create
array.
(_Jv_NewPrimArray): Likewise.
Include <new>.
* gcj/array.h (__JArray): `length' field now const. Added
constructor.
(class JArray): Added constructor.
From-SVN: r37718
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r-- | libjava/prims.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/libjava/prims.cc b/libjava/prims.cc index 8ca05da3905..22fa4b64070 100644 --- a/libjava/prims.cc +++ b/libjava/prims.cc @@ -67,6 +67,9 @@ details. */ #include <ltdl.h> #endif +// We use placement new. +#include <new> + // We allocate a single OutOfMemoryError exception which we keep // around for use if we run out of memory. static java::lang::OutOfMemoryError *no_memory; @@ -411,8 +414,9 @@ _Jv_NewObjectArray (jsize count, jclass elementClass, jobject init) obj = (jobjectArray) _Jv_AllocArray (size, klass); if (__builtin_expect (! obj, false)) JvThrow (no_memory); - obj->length = count; - jobject* ptr = elements(obj); + // Use placement new to initialize length field. + new (obj) __JArray (count); + jobject *ptr = elements(obj); // We know the allocator returns zeroed memory. So don't bother // zeroing it again. if (init) @@ -446,7 +450,8 @@ _Jv_NewPrimArray (jclass eltype, jint count) __JArray *arr = (__JArray*) _Jv_AllocObj (size + elsize * count, klass); if (__builtin_expect (! arr, false)) JvThrow (no_memory); - arr->length = count; + // Use placement new to initialize length field. + new (arr) __JArray (count); // Note that we assume we are given zeroed memory by the allocator. return arr; |