1.1 --- a/src/ObjectVisitor.h Sat Nov 17 22:02:08 2012 -0800
1.2 +++ b/src/ObjectVisitor.h Sat Nov 17 23:11:38 2012 -0800
1.3 @@ -46,22 +46,26 @@
1.4 }
1.5
1.6 size_t iterateType(Object *obj) {
1.7 - visitField(obj, Type::offsetOfContained());
1.8 visitField(obj, Type::offsetOfName());
1.9 return sizeof(Type);
1.10 }
1.11
1.12 + size_t iterateArrayType(Object *obj) {
1.13 + iterateType(obj);
1.14 + visitField(obj, ArrayType::offsetOfContained());
1.15 + visitField(obj, ArrayType::offsetOfNewMap());
1.16 + return sizeof(ArrayType);
1.17 + }
1.18 +
1.19 size_t iterateStructType(Object *obj) {
1.20 - visitField(obj, Type::offsetOfContained());
1.21 - visitField(obj, Type::offsetOfName());
1.22 + iterateType(obj);
1.23 visitField(obj, StructType::offsetOfFields());
1.24 visitField(obj, StructType::offsetOfNewMap());
1.25 return sizeof(StructType);
1.26 }
1.27
1.28 size_t iterateFunctionType(Object *obj) {
1.29 - visitField(obj, Type::offsetOfContained());
1.30 - visitField(obj, Type::offsetOfName());
1.31 + iterateType(obj);
1.32 visitField(obj, FunctionType::offsetOfReturnType());
1.33 visitField(obj, FunctionType::offsetOfParameters());
1.34 visitField(obj, FunctionType::offsetOfDefaults());
1.35 @@ -191,6 +195,9 @@
1.36 case MapKind_Type:
1.37 return iterateType(obj);
1.38
1.39 + case MapKind_ArrayType:
1.40 + return iterateArrayType(obj);
1.41 +
1.42 case MapKind_FunctionType:
1.43 return iterateFunctionType(obj);
1.44
1.45 @@ -271,6 +278,9 @@
1.46 case MapKind_Type:
1.47 return sizeof(Type);
1.48
1.49 + case MapKind_ArrayType:
1.50 + return sizeof(ArrayType);
1.51 +
1.52 case MapKind_FunctionType:
1.53 return sizeof(FunctionType);
1.54