summaryrefslogtreecommitdiff
path: root/libjava/prims.cc
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-11-24 21:02:36 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2000-11-24 21:02:36 +0000
commitd461d0f677cd6c460e73de7e5112e2002f8fc42f (patch)
treed4054b9ccee889a0365a1284dd577cf7e13c7d0c /libjava/prims.cc
parentdc49b4973ad9fc04b71abeb6b5996ed00d52f0d0 (diff)
downloadgcc-d461d0f677cd6c460e73de7e5112e2002f8fc42f.tar.gz
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37718 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/prims.cc')
-rw-r--r--libjava/prims.cc11
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;