Index: runtime/vm/raw_object.h |
=================================================================== |
--- runtime/vm/raw_object.h (revision 32446) |
+++ runtime/vm/raw_object.h (working copy) |
@@ -16,9 +16,7 @@ |
#define CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY(V) \ |
V(Class) \ |
V(UnresolvedClass) \ |
- V(AbstractTypeArguments) \ |
- V(TypeArguments) \ |
- V(InstantiatedTypeArguments) \ |
+ V(TypeArguments) \ |
V(PatchClass) \ |
V(Function) \ |
V(ClosureData) \ |
@@ -537,19 +535,18 @@ |
}; |
-class RawAbstractTypeArguments : public RawObject { |
+class RawTypeArguments : public RawObject { |
private: |
- RAW_HEAP_OBJECT_IMPLEMENTATION(AbstractTypeArguments); |
-}; |
- |
- |
-class RawTypeArguments : public RawAbstractTypeArguments { |
- private: |
RAW_HEAP_OBJECT_IMPLEMENTATION(TypeArguments); |
RawObject** from() { |
- return reinterpret_cast<RawObject**>(&ptr()->length_); |
+ return reinterpret_cast<RawObject**>(&ptr()->instantiations_); |
} |
+ // The instantiations_ array remains empty for instantiated type arguments. |
+ RawArray* instantiations_; // Array of paired canonical vectors: |
+ // Even index: instantiator. |
+ // Odd index: instantiated (without bound error). |
+ // Instantiations leading to bound errors do not get cached. |
RawSmi* length_; |
// Variable length data follows here. |
@@ -562,22 +559,6 @@ |
}; |
-class RawInstantiatedTypeArguments : public RawAbstractTypeArguments { |
- private: |
- RAW_HEAP_OBJECT_IMPLEMENTATION(InstantiatedTypeArguments); |
- |
- RawObject** from() { |
- return reinterpret_cast<RawObject**>( |
- &ptr()->uninstantiated_type_arguments_); |
- } |
- RawAbstractTypeArguments* uninstantiated_type_arguments_; |
- RawAbstractTypeArguments* instantiator_type_arguments_; |
- RawObject** to() { |
- return reinterpret_cast<RawObject**>(&ptr()->instantiator_type_arguments_); |
- } |
-}; |
- |
- |
class RawPatchClass : public RawObject { |
private: |
RAW_HEAP_OBJECT_IMPLEMENTATION(PatchClass); |
@@ -1174,7 +1155,7 @@ |
return reinterpret_cast<RawObject**>(&ptr()->type_class_); |
} |
RawObject* type_class_; // Either resolved class or unresolved class. |
- RawAbstractTypeArguments* arguments_; |
+ RawTypeArguments* arguments_; |
RawLanguageError* error_; // Error object if type is malformed or malbounded. |
RawObject** to() { |
return reinterpret_cast<RawObject**>(&ptr()->error_); |
@@ -1385,7 +1366,7 @@ |
RawObject** from() { |
return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); |
} |
- RawAbstractTypeArguments* type_arguments_; |
+ RawTypeArguments* type_arguments_; |
RawSmi* length_; |
// Variable length data follows here. |
RawObject** data() { |
@@ -1417,7 +1398,7 @@ |
RawObject** from() { |
return reinterpret_cast<RawObject**>(&ptr()->type_arguments_); |
} |
- RawAbstractTypeArguments* type_arguments_; |
+ RawTypeArguments* type_arguments_; |
RawSmi* length_; |
RawArray* data_; |
RawObject** to() { |