diff -r 22b67b4cf067 -r 13bd3a8df334 jitcraft/Array.cpp --- a/jitcraft/Array.cpp Sat Jul 07 01:45:33 2012 -0400 +++ b/jitcraft/Array.cpp Sat Jul 07 17:11:31 2012 -0700 @@ -45,19 +45,21 @@ if (type->contained()->primitive() == PrimitiveType_Char) return sizeof(Array) + elements * sizeof(char); assert(type->contained()->isFloat()); - return sizeof(Array) + elements * sizeof(float); + return elements * sizeof(float); } Array * Array::New(Zone *zone, Handle map, uint32 elements, Heap::Tenure tenure) { - size_t bytes = SizeFor(map->type(), elements); + size_t elementBytes = SizeFor(map->type(), elements); + size_t bytes = sizeof(Array) + elementBytes; Local array(zone, Array::cast(zone->allocate(map, bytes, tenure))); if (!array) return NULL; array->nelements_ = elements; array->elements_ = VoidPtr((Array *)array + 1); + memset(array->elements_, 0, elementBytes); return array; }