Index: runtime/vm/raw_object.h |
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h |
index 977ba55040acdc93904c958016db44714e6dce62..30323ec8244e51f0f8ec2529a33f1ffcefd7ea7d 100644 |
--- a/runtime/vm/raw_object.h |
+++ b/runtime/vm/raw_object.h |
@@ -697,9 +697,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. |
@@ -771,6 +770,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*); |
@@ -1687,6 +1688,7 @@ class RawType : public RawAbstractType { |
} |
RawObject* type_class_; // Either resolved class or unresolved class. |
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 |
@@ -1728,6 +1730,7 @@ class RawTypeParameter : public RawAbstractType { |
} |
RawClass* parameterized_class_; |
RawString* name_; |
+ RawSmi* hash_; |
RawAbstractType* bound_; // ObjectType if no explicit bound specified. |
RawObject** to() { return reinterpret_cast<RawObject**>(&ptr()->bound_); } |
TokenPosition token_pos_; |
@@ -1745,6 +1748,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_); |
@@ -1760,6 +1764,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_); |