diff -r 9308d52205a0 -r bab29bcec7fe src/Types.cpp --- a/src/Types.cpp Sun Sep 16 19:02:23 2012 -0700 +++ b/src/Types.cpp Sun Sep 16 21:34:10 2012 -0700 @@ -104,6 +104,29 @@ } Type * +Type::NewExternalArray(Zone *zone, Handle contained) +{ + Local type(zone, Type::cast(zone->allocate(MapKind_Type, sizeof(Type), Heap::Tenure_Old))); + if (!type) + return NULL; + + assert(contained->isPrimitive()); + + type->kind_ = EXTERNAL_ARRAY; + type->name_ = NULL; + type->contained_ = contained; + type->returnType_ = NULL; + type->parameters_ = NULL; + type->defaults_ = NULL; + type->fields_ = NULL; + type->newMap_ = NULL; + type->elements_ = DYNAMIC_ARRAY_SIZE; + type->levels_ = 1; + type->const_ = false; + return type; +} + +Type * Type::NewReference(Zone *zone, Handle contained, bool isConst) { Local type(zone, Type::cast(zone->allocate(MapKind_Type, sizeof(Type), Heap::Tenure_Old)));