Index: runtime/vm/raw_object.h |
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h |
index ded9eff28c8053fdae92bc30164d31f5b1d5ed75..ef5924e9f97533018301026464af053e5e5bce07 100644 |
--- a/runtime/vm/raw_object.h |
+++ b/runtime/vm/raw_object.h |
@@ -698,9 +698,8 @@ class RawClass : public RawObject { |
RawAbstractType* super_type_; |
RawType* mixin_; // Generic mixin type, e.g. M<T>, not M<int>. |
RawFunction* signature_function_; // Associated function for typedef class. |
- RawArray* constants_; // Canonicalized values of this class. |
- RawObject* canonical_types_; // An array of canonicalized types of this class |
- // or the canonical type. |
+ RawArray* constants_; // Canonicalized const instances of this class. |
+ RawType* canonical_type_; // Canonical type for this class. |
RawArray* invocation_dispatcher_cache_; // Cache for dispatcher functions. |
RawCode* allocation_stub_; // Stub code for allocation of instances. |
RawGrowableObjectArray* direct_subclasses_; // Array of Class. |
@@ -773,6 +772,8 @@ class RawTypeArguments : public RawObject { |
// Instantiations leading to bound errors do not get cached. |
RawSmi* length_; |
+ RawSmi* hash_; |
+ |
// Variable length data follows here. |
RawAbstractType* const* types() const { |
OPEN_ARRAY_START(RawAbstractType*, RawAbstractType*); |
@@ -1691,6 +1692,7 @@ class RawType : public RawAbstractType { |
// Either the id of the resolved class as a Smi or an UnresolvedClass. |
RawObject* type_class_id_; |
RawTypeArguments* arguments_; |
+ RawSmi* hash_; |
// This type object represents a function type if its signature field is a |
// non-null function object. |
// If this type is malformed or malbounded, the signature field gets |
@@ -1731,6 +1733,7 @@ class RawTypeParameter : public RawAbstractType { |
return reinterpret_cast<RawObject**>(&ptr()->name_); |
} |
RawString* name_; |
+ RawSmi* hash_; |
RawAbstractType* bound_; // ObjectType if no explicit bound specified. |
RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); } |
classid_t parameterized_class_id_; |
@@ -1749,6 +1752,7 @@ class RawBoundedType : public RawAbstractType { |
} |
RawAbstractType* type_; |
RawAbstractType* bound_; |
+ RawSmi* hash_; |
RawTypeParameter* type_parameter_; // For more detailed error reporting. |
RawObject** to() { |
return reinterpret_cast<RawObject**>(&ptr()->type_parameter_); |
@@ -1764,6 +1768,7 @@ class RawMixinAppType : public RawAbstractType { |
return reinterpret_cast<RawObject**>(&ptr()->super_type_); |
} |
RawAbstractType* super_type_; |
+ RawSmi* hash_; |
RawArray* mixin_types_; // Array of AbstractType. |
RawObject** to() { |
return reinterpret_cast<RawObject**>(&ptr()->mixin_types_); |