1.1 --- a/src/Types.cpp Wed Aug 01 22:32:59 2012 -0700
1.2 +++ b/src/Types.cpp Sat Aug 04 17:51:43 2012 -0700
1.3 @@ -35,6 +35,7 @@
1.4 type->contained_ = NULL;
1.5 type->returnType_ = NULL;
1.6 type->parameters_ = NULL;
1.7 + type->fields_ = NULL;
1.8 return type;
1.9 }
1.10
1.11 @@ -50,6 +51,7 @@
1.12 type->contained_ = NULL;
1.13 type->returnType_ = NULL;
1.14 type->parameters_ = NULL;
1.15 + type->fields_ = NULL;
1.16 type->primitive_ = prim;
1.17 return type;
1.18 }
1.19 @@ -66,6 +68,7 @@
1.20 type->contained_ = contained;
1.21 type->returnType_ = NULL;
1.22 type->parameters_ = NULL;
1.23 + type->fields_ = NULL;
1.24 type->elements_ = elements;
1.25 if (!contained->isArray())
1.26 type->levels_ = 1;
1.27 @@ -87,6 +90,7 @@
1.28 type->contained_ = contained;
1.29 type->returnType_ = NULL;
1.30 type->parameters_ = NULL;
1.31 + type->fields_ = NULL;
1.32 type->const_ = isConst;
1.33 return type;
1.34 }
1.35 @@ -101,6 +105,7 @@
1.36 type->kind_ = FUNCTION;
1.37 type->name_ = NULL;
1.38 type->contained_ = NULL;
1.39 + type->fields_ = NULL;
1.40 type->returnType_ = returnType;
1.41 type->parameters_ = parameters;
1.42 return type;
1.43 @@ -118,6 +123,23 @@
1.44 type->contained_ = NULL;
1.45 type->returnType_ = NULL;
1.46 type->parameters_ = NULL;
1.47 + type->fields_ = NULL;
1.48 + return type;
1.49 +}
1.50 +
1.51 +Type *
1.52 +Type::NewStruct(Zone *zone, Handle<String> name, Handle<FixedArray> fields)
1.53 +{
1.54 + Local<Type> type(zone, Type::cast(zone->allocate(MapKind_Type, sizeof(Type), Heap::Tenure_Old)));
1.55 + if (!type)
1.56 + return NULL;
1.57 +
1.58 + type->kind_ = STRUCT;
1.59 + type->name_ = name;
1.60 + type->contained_ = NULL;
1.61 + type->returnType_ = NULL;
1.62 + type->parameters_ = NULL;
1.63 + type->fields_ = fields;
1.64 return type;
1.65 }
1.66
1.67 @@ -131,6 +153,7 @@
1.68 type->kind_ = NATIVE;
1.69 type->name_ = NULL;
1.70 type->contained_ = NULL;
1.71 + type->fields_ = NULL;
1.72 type->returnType_ = returnType;
1.73 type->parameters_ = parameters;
1.74 type->variadicNative_ = variadic;