diff -r e3c851a14f16 -r 18f3010a358c src/Structures.cpp --- a/src/Structures.cpp Tue Dec 25 18:13:02 2012 -0800 +++ b/src/Structures.cpp Wed Dec 26 17:14:12 2012 -0800 @@ -133,14 +133,16 @@ childStructMap = StructMap::cast(StructType::cast(desc->type())->newMap()); child = Struct::New(zone, childStructMap, tenure); } else if (desc->type()->isArray()) { - assert(false); -#if 0 - childArrayMap = ArrayMap::cast(desc->type()->newMap()); - if (desc->type()->isFixedLength()) + // :TODO: don't create empty arrays for ref slots here. + // Instead, make a separate Initialize function, so we + // can avoid double-creating arrays for module globals. + // (const char:x[] = "x") + ArrayType *type = ArrayType::cast(desc->type()); + childArrayMap = ArrayMap::cast(type->newMap()); + if (type->isFixedLength()) child = Array::NewFixed(zone, childArrayMap, tenure); else child = Array::NewEmpty(zone, childArrayMap, tenure); -#endif } if (!child) return NULL;