Chromium Code Reviews| Index: runtime/vm/object.h |
| diff --git a/runtime/vm/object.h b/runtime/vm/object.h |
| index 5813f346d55a385d4b8b9f8ec3b2e254604b4a6d..4b674835f8af5c793e8f40d60390c1ef4290bccb 100644 |
| --- a/runtime/vm/object.h |
| +++ b/runtime/vm/object.h |
| @@ -1659,12 +1659,15 @@ class TypeArguments : public Object { |
| // Check if the vector is instantiated (it must not be null). |
| bool IsInstantiated(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
|
rmacnak
2017/06/30 21:52:27
2 billion type parameters should be enough for any
|
| TrailPtr trail = NULL) const { |
| - return IsSubvectorInstantiated(0, Length(), genericity, trail); |
| + return IsSubvectorInstantiated(0, Length(), genericity, |
| + num_free_fun_type_params, trail); |
| } |
| bool IsSubvectorInstantiated(intptr_t from_index, |
| intptr_t len, |
| Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const; |
| bool IsUninstantiatedIdentity() const; |
| bool CanShareInstantiatorTypeArguments(const Class& instantiator_class) const; |
| @@ -2248,6 +2251,7 @@ class Function : public Object { |
| // Returns true if the signature of this function is instantiated, i.e. if it |
| // does not involve generic parameter types or generic result type. |
| bool HasInstantiatedSignature(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const; |
| // Build a string of the form 'T, {B b, C c}' representing the user |
| @@ -5771,6 +5775,7 @@ class AbstractType : public Instance { |
| virtual void set_arguments(const TypeArguments& value) const; |
| virtual TokenPosition token_pos() const; |
| virtual bool IsInstantiated(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const; |
| virtual bool CanonicalizeEquals(const Instance& other) const { |
| return Equals(other); |
| @@ -5992,6 +5997,7 @@ class Type : public AbstractType { |
| virtual void set_arguments(const TypeArguments& value) const; |
| virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
| virtual bool IsInstantiated(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const; |
| virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| virtual bool IsRecursive() const; |
| @@ -6141,6 +6147,7 @@ class TypeRef : public AbstractType { |
| return AbstractType::Handle(type()).token_pos(); |
| } |
| virtual bool IsInstantiated(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const; |
| virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| virtual bool IsRecursive() const { return true; } |
| @@ -6226,6 +6233,7 @@ class TypeParameter : public AbstractType { |
| Heap::Space space) const; |
| virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
| virtual bool IsInstantiated(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const; |
| virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| virtual bool IsRecursive() const { return false; } |
| @@ -6320,12 +6328,14 @@ class BoundedType : public AbstractType { |
| return AbstractType::Handle(type()).token_pos(); |
| } |
| virtual bool IsInstantiated(Genericity genericity = kAny, |
| + intptr_t num_free_fun_type_params = kMaxInt32, |
| TrailPtr trail = NULL) const { |
| // It is not possible to encounter an instantiated bounded type with an |
| // uninstantiated upper bound. Therefore, we do not need to check if the |
| // bound is instantiated. Moreover, doing so could lead into cycles, as in |
| // class C<T extends C<C>> { }. |
| - return AbstractType::Handle(type()).IsInstantiated(genericity, trail); |
| + return AbstractType::Handle(type()).IsInstantiated( |
| + genericity, num_free_fun_type_params, trail); |
| } |
| virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| virtual bool IsRecursive() const; |