Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: runtime/vm/object.h

Issue 1309113004: Change trail from GrowableObjectArray to ZoneGrowableArray. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Address comments Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « runtime/vm/class_finalizer.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_OBJECT_H_ 5 #ifndef VM_OBJECT_H_
6 #define VM_OBJECT_H_ 6 #define VM_OBJECT_H_
7 7
8 #include "include/dart_api.h" 8 #include "include/dart_api.h"
9 #include "platform/assert.h" 9 #include "platform/assert.h"
10 #include "platform/utils.h" 10 #include "platform/utils.h"
(...skipping 1509 matching lines...) Expand 10 before | Expand all | Expand 10 after
1520 void set_ident(const String& ident) const; 1520 void set_ident(const String& ident) const;
1521 void set_token_pos(intptr_t token_pos) const; 1521 void set_token_pos(intptr_t token_pos) const;
1522 1522
1523 static RawUnresolvedClass* New(); 1523 static RawUnresolvedClass* New();
1524 1524
1525 FINAL_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass, Object); 1525 FINAL_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass, Object);
1526 friend class Class; 1526 friend class Class;
1527 }; 1527 };
1528 1528
1529 1529
1530 typedef ZoneGrowableArray<const AbstractType*> Trail;
1531 typedef ZoneGrowableArray<const AbstractType*>* TrailPtr;
1532
1530 // A TypeArguments is an array of AbstractType. 1533 // A TypeArguments is an array of AbstractType.
1531 class TypeArguments : public Object { 1534 class TypeArguments : public Object {
1532 public: 1535 public:
1533 intptr_t Length() const; 1536 intptr_t Length() const;
1534 RawAbstractType* TypeAt(intptr_t index) const; 1537 RawAbstractType* TypeAt(intptr_t index) const;
1535 static intptr_t type_at_offset(intptr_t index) { 1538 static intptr_t type_at_offset(intptr_t index) {
1536 return OFFSET_OF_RETURNED_VALUE( 1539 return OFFSET_OF_RETURNED_VALUE(
1537 RawTypeArguments, types) + index * kWordSize; 1540 RawTypeArguments, types) + index * kWordSize;
1538 } 1541 }
1539 void SetTypeAt(intptr_t index, const AbstractType& value) const; 1542 void SetTypeAt(intptr_t index, const AbstractType& value) const;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1585 intptr_t len, 1588 intptr_t len,
1586 Error* bound_error) const { 1589 Error* bound_error) const {
1587 return TypeTest(kIsMoreSpecificThan, other, from_index, len, bound_error); 1590 return TypeTest(kIsMoreSpecificThan, other, from_index, len, bound_error);
1588 } 1591 }
1589 1592
1590 // Check if the vectors are equal (they may be null). 1593 // Check if the vectors are equal (they may be null).
1591 bool Equals(const TypeArguments& other) const { 1594 bool Equals(const TypeArguments& other) const {
1592 return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length()); 1595 return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length());
1593 } 1596 }
1594 1597
1595 bool IsEquivalent(const TypeArguments& other, 1598 bool IsEquivalent(const TypeArguments& other, TrailPtr trail = NULL) const {
1596 GrowableObjectArray* trail = NULL) const {
1597 return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length(), trail); 1599 return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length(), trail);
1598 } 1600 }
1599 bool IsSubvectorEquivalent(const TypeArguments& other, 1601 bool IsSubvectorEquivalent(const TypeArguments& other,
1600 intptr_t from_index, 1602 intptr_t from_index,
1601 intptr_t len, 1603 intptr_t len,
1602 GrowableObjectArray* trail = NULL) const; 1604 TrailPtr trail = NULL) const;
1603 1605
1604 // Check if the vector is instantiated (it must not be null). 1606 // Check if the vector is instantiated (it must not be null).
1605 bool IsInstantiated(GrowableObjectArray* trail = NULL) const { 1607 bool IsInstantiated(TrailPtr trail = NULL) const {
1606 return IsSubvectorInstantiated(0, Length(), trail); 1608 return IsSubvectorInstantiated(0, Length(), trail);
1607 } 1609 }
1608 bool IsSubvectorInstantiated(intptr_t from_index, 1610 bool IsSubvectorInstantiated(intptr_t from_index,
1609 intptr_t len, 1611 intptr_t len,
1610 GrowableObjectArray* trail = NULL) const; 1612 TrailPtr trail = NULL) const;
1611 bool IsUninstantiatedIdentity() const; 1613 bool IsUninstantiatedIdentity() const;
1612 bool CanShareInstantiatorTypeArguments(const Class& instantiator_class) const; 1614 bool CanShareInstantiatorTypeArguments(const Class& instantiator_class) const;
1613 1615
1614 // Return true if all types of this vector are respectively, resolved, 1616 // Return true if all types of this vector are respectively, resolved,
1615 // finalized, or bounded. 1617 // finalized, or bounded.
1616 bool IsResolved() const; 1618 bool IsResolved() const;
1617 bool IsFinalized() const; 1619 bool IsFinalized() const;
1618 bool IsBounded() const; 1620 bool IsBounded() const;
1619 1621
1620 // Return true if this vector contains a recursive type argument. 1622 // Return true if this vector contains a recursive type argument.
1621 bool IsRecursive() const; 1623 bool IsRecursive() const;
1622 1624
1623 // Clone this type argument vector and clone all unfinalized type arguments. 1625 // Clone this type argument vector and clone all unfinalized type arguments.
1624 // Finalized type arguments are shared. 1626 // Finalized type arguments are shared.
1625 RawTypeArguments* CloneUnfinalized() const; 1627 RawTypeArguments* CloneUnfinalized() const;
1626 1628
1627 // Clone this type argument vector and clone all uninstantiated type 1629 // Clone this type argument vector and clone all uninstantiated type
1628 // arguments, changing the class owner of type parameters. 1630 // arguments, changing the class owner of type parameters.
1629 // Instantiated type arguments are shared. 1631 // Instantiated type arguments are shared.
1630 RawTypeArguments* CloneUninstantiated( 1632 RawTypeArguments* CloneUninstantiated(
1631 const Class& new_owner, 1633 const Class& new_owner, TrailPtr trail = NULL) const;
1632 GrowableObjectArray* trail = NULL) const;
1633 1634
1634 // Canonicalize only if instantiated, otherwise returns 'this'. 1635 // Canonicalize only if instantiated, otherwise returns 'this'.
1635 RawTypeArguments* Canonicalize(GrowableObjectArray* trail = NULL) const; 1636 RawTypeArguments* Canonicalize(TrailPtr trail = NULL) const;
1636 1637
1637 // Return 'this' if this type argument vector is instantiated, i.e. if it does 1638 // Return 'this' if this type argument vector is instantiated, i.e. if it does
1638 // not refer to type parameters. Otherwise, return a new type argument vector 1639 // not refer to type parameters. Otherwise, return a new type argument vector
1639 // where each reference to a type parameter is replaced with the corresponding 1640 // where each reference to a type parameter is replaced with the corresponding
1640 // type of the instantiator type argument vector. 1641 // type of the instantiator type argument vector.
1641 // If bound_error is not NULL, it may be set to reflect a bound error. 1642 // If bound_error is not NULL, it may be set to reflect a bound error.
1642 RawTypeArguments* InstantiateFrom( 1643 RawTypeArguments* InstantiateFrom(
1643 const TypeArguments& instantiator_type_arguments, 1644 const TypeArguments& instantiator_type_arguments,
1644 Error* bound_error, 1645 Error* bound_error,
1645 GrowableObjectArray* trail = NULL) const; 1646 TrailPtr trail = NULL) const;
1646 1647
1647 // Runtime instantiation with canonicalization. Not to be used during type 1648 // Runtime instantiation with canonicalization. Not to be used during type
1648 // finalization at compile time. 1649 // finalization at compile time.
1649 RawTypeArguments* InstantiateAndCanonicalizeFrom( 1650 RawTypeArguments* InstantiateAndCanonicalizeFrom(
1650 const TypeArguments& instantiator_type_arguments, 1651 const TypeArguments& instantiator_type_arguments,
1651 Error* bound_error) const; 1652 Error* bound_error) const;
1652 1653
1653 // Return true if this type argument vector has cached instantiations. 1654 // Return true if this type argument vector has cached instantiations.
1654 bool HasInstantiations() const; 1655 bool HasInstantiations() const;
1655 1656
(...skipping 3308 matching lines...) Expand 10 before | Expand all | Expand 10 after
4964 virtual bool IsMalbounded() const; 4965 virtual bool IsMalbounded() const;
4965 virtual bool IsMalformedOrMalbounded() const; 4966 virtual bool IsMalformedOrMalbounded() const;
4966 virtual RawLanguageError* error() const; 4967 virtual RawLanguageError* error() const;
4967 virtual void set_error(const LanguageError& value) const; 4968 virtual void set_error(const LanguageError& value) const;
4968 virtual bool IsResolved() const; 4969 virtual bool IsResolved() const;
4969 virtual bool HasResolvedTypeClass() const; 4970 virtual bool HasResolvedTypeClass() const;
4970 virtual RawClass* type_class() const; 4971 virtual RawClass* type_class() const;
4971 virtual RawUnresolvedClass* unresolved_class() const; 4972 virtual RawUnresolvedClass* unresolved_class() const;
4972 virtual RawTypeArguments* arguments() const; 4973 virtual RawTypeArguments* arguments() const;
4973 virtual intptr_t token_pos() const; 4974 virtual intptr_t token_pos() const;
4974 virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const; 4975 virtual bool IsInstantiated(TrailPtr trail = NULL) const;
4975 virtual bool CanonicalizeEquals(const Instance& other) const { 4976 virtual bool CanonicalizeEquals(const Instance& other) const {
4976 return Equals(other); 4977 return Equals(other);
4977 } 4978 }
4978 virtual bool Equals(const Instance& other) const { 4979 virtual bool Equals(const Instance& other) const {
4979 return IsEquivalent(other); 4980 return IsEquivalent(other);
4980 } 4981 }
4981 virtual bool IsEquivalent(const Instance& other, 4982 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
4982 GrowableObjectArray* trail = NULL) const;
4983 virtual bool IsRecursive() const; 4983 virtual bool IsRecursive() const;
4984 4984
4985 // Instantiate this type using the given type argument vector. 4985 // Instantiate this type using the given type argument vector.
4986 // Return a new type, or return 'this' if it is already instantiated. 4986 // Return a new type, or return 'this' if it is already instantiated.
4987 // If bound_error is not NULL, it may be set to reflect a bound error. 4987 // If bound_error is not NULL, it may be set to reflect a bound error.
4988 virtual RawAbstractType* InstantiateFrom( 4988 virtual RawAbstractType* InstantiateFrom(
4989 const TypeArguments& instantiator_type_arguments, 4989 const TypeArguments& instantiator_type_arguments,
4990 Error* bound_error, 4990 Error* bound_error,
4991 GrowableObjectArray* trail = NULL) const; 4991 TrailPtr trail = NULL) const;
4992 4992
4993 // Return a clone of this unfinalized type or the type itself if it is 4993 // Return a clone of this unfinalized type or the type itself if it is
4994 // already finalized. Apply recursively to type arguments, i.e. finalized 4994 // already finalized. Apply recursively to type arguments, i.e. finalized
4995 // type arguments of an unfinalized type are not cloned, but shared. 4995 // type arguments of an unfinalized type are not cloned, but shared.
4996 virtual RawAbstractType* CloneUnfinalized() const; 4996 virtual RawAbstractType* CloneUnfinalized() const;
4997 4997
4998 // Return a clone of this uninstantiated type where all references to type 4998 // Return a clone of this uninstantiated type where all references to type
4999 // parameters are replaced with references to type parameters of the same name 4999 // parameters are replaced with references to type parameters of the same name
5000 // but belonging to the new owner class. 5000 // but belonging to the new owner class.
5001 // Apply recursively to type arguments, i.e. instantiated type arguments of 5001 // Apply recursively to type arguments, i.e. instantiated type arguments of
5002 // an uninstantiated type are not cloned, but shared. 5002 // an uninstantiated type are not cloned, but shared.
5003 virtual RawAbstractType* CloneUninstantiated( 5003 virtual RawAbstractType* CloneUninstantiated(
5004 const Class& new_owner, 5004 const Class& new_owner, TrailPtr trail = NULL) const;
5005 GrowableObjectArray* trail = NULL) const;
5006 5005
5007 virtual RawInstance* CheckAndCanonicalize(const char** error_str) const { 5006 virtual RawInstance* CheckAndCanonicalize(const char** error_str) const {
5008 return Canonicalize(); 5007 return Canonicalize();
5009 } 5008 }
5010 5009
5011 // Return the canonical version of this type. 5010 // Return the canonical version of this type.
5012 virtual RawAbstractType* Canonicalize( 5011 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const;
5013 GrowableObjectArray* trail = NULL) const;
5014 5012
5015 // Return the object associated with the receiver in the trail or 5013 // Return the object associated with the receiver in the trail or
5016 // Object::null() if the receiver is not contained in the trail. 5014 // AbstractType::null() if the receiver is not contained in the trail.
5017 RawObject* OnlyBuddyInTrail(GrowableObjectArray* trail) const; 5015 RawAbstractType* OnlyBuddyInTrail(TrailPtr trail) const;
5018 5016
5019 // If the trail is null, allocate a trail, add the pair <receiver, buddy> to 5017 // If the trail is null, allocate a trail, add the pair <receiver, buddy> to
5020 // the trail. The receiver may only be added once with its only buddy. 5018 // the trail. The receiver may only be added once with its only buddy.
5021 void AddOnlyBuddyToTrail(GrowableObjectArray** trail, 5019 void AddOnlyBuddyToTrail(TrailPtr* trail, const AbstractType& buddy) const;
5022 const Object& buddy) const;
5023 5020
5024 // The name of this type, including the names of its type arguments, if any. 5021 // The name of this type, including the names of its type arguments, if any.
5025 virtual RawString* Name() const { 5022 virtual RawString* Name() const {
5026 return BuildName(kInternalName); 5023 return BuildName(kInternalName);
5027 } 5024 }
5028 5025
5029 virtual RawString* PrettyName() const { 5026 virtual RawString* PrettyName() const {
5030 return BuildName(kPrettyName); 5027 return BuildName(kPrettyName);
5031 } 5028 }
5032 5029
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
5151 return raw_ptr()->type_state_ >= RawType::kResolved; 5148 return raw_ptr()->type_state_ >= RawType::kResolved;
5152 } 5149 }
5153 void set_is_resolved() const; 5150 void set_is_resolved() const;
5154 virtual bool HasResolvedTypeClass() const; // Own type class resolved. 5151 virtual bool HasResolvedTypeClass() const; // Own type class resolved.
5155 virtual RawClass* type_class() const; 5152 virtual RawClass* type_class() const;
5156 void set_type_class(const Object& value) const; 5153 void set_type_class(const Object& value) const;
5157 virtual RawUnresolvedClass* unresolved_class() const; 5154 virtual RawUnresolvedClass* unresolved_class() const;
5158 virtual RawTypeArguments* arguments() const; 5155 virtual RawTypeArguments* arguments() const;
5159 void set_arguments(const TypeArguments& value) const; 5156 void set_arguments(const TypeArguments& value) const;
5160 virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; } 5157 virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; }
5161 virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const; 5158 virtual bool IsInstantiated(TrailPtr trail = NULL) const;
5162 virtual bool IsEquivalent(const Instance& other, 5159 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
5163 GrowableObjectArray* trail = NULL) const;
5164 virtual bool IsRecursive() const; 5160 virtual bool IsRecursive() const;
5165 virtual RawAbstractType* InstantiateFrom( 5161 virtual RawAbstractType* InstantiateFrom(
5166 const TypeArguments& instantiator_type_arguments, 5162 const TypeArguments& instantiator_type_arguments,
5167 Error* malformed_error, 5163 Error* malformed_error,
5168 GrowableObjectArray* trail = NULL) const; 5164 TrailPtr trail = NULL) const;
5169 virtual RawAbstractType* CloneUnfinalized() const; 5165 virtual RawAbstractType* CloneUnfinalized() const;
5170 virtual RawAbstractType* CloneUninstantiated( 5166 virtual RawAbstractType* CloneUninstantiated(
5171 const Class& new_owner, 5167 const Class& new_owner,
5172 GrowableObjectArray* trail = NULL) const; 5168 TrailPtr trail = NULL) const;
5173 virtual RawAbstractType* Canonicalize( 5169 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const;
5174 GrowableObjectArray* trail = NULL) const;
5175 5170
5176 virtual intptr_t Hash() const; 5171 virtual intptr_t Hash() const;
5177 5172
5178 static intptr_t InstanceSize() { 5173 static intptr_t InstanceSize() {
5179 return RoundedAllocationSize(sizeof(RawType)); 5174 return RoundedAllocationSize(sizeof(RawType));
5180 } 5175 }
5181 5176
5182 // The type of the literal 'null'. 5177 // The type of the literal 'null'.
5183 static RawType* NullType(); 5178 static RawType* NullType();
5184 5179
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after
5273 void set_type(const AbstractType& value) const; 5268 void set_type(const AbstractType& value) const;
5274 virtual RawClass* type_class() const { 5269 virtual RawClass* type_class() const {
5275 return AbstractType::Handle(type()).type_class(); 5270 return AbstractType::Handle(type()).type_class();
5276 } 5271 }
5277 virtual RawTypeArguments* arguments() const { 5272 virtual RawTypeArguments* arguments() const {
5278 return AbstractType::Handle(type()).arguments(); 5273 return AbstractType::Handle(type()).arguments();
5279 } 5274 }
5280 virtual intptr_t token_pos() const { 5275 virtual intptr_t token_pos() const {
5281 return AbstractType::Handle(type()).token_pos(); 5276 return AbstractType::Handle(type()).token_pos();
5282 } 5277 }
5283 virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const; 5278 virtual bool IsInstantiated(TrailPtr trail = NULL) const;
5284 virtual bool IsEquivalent(const Instance& other, 5279 virtual bool IsEquivalent(const Instance& other,
5285 GrowableObjectArray* trail = NULL) const; 5280 TrailPtr trail = NULL) const;
5286 virtual bool IsRecursive() const { return true; } 5281 virtual bool IsRecursive() const { return true; }
5287 virtual RawTypeRef* InstantiateFrom( 5282 virtual RawTypeRef* InstantiateFrom(
5288 const TypeArguments& instantiator_type_arguments, 5283 const TypeArguments& instantiator_type_arguments,
5289 Error* bound_error, 5284 Error* bound_error,
5290 GrowableObjectArray* trail = NULL) const; 5285 TrailPtr trail = NULL) const;
5291 virtual RawTypeRef* CloneUninstantiated( 5286 virtual RawTypeRef* CloneUninstantiated(
5292 const Class& new_owner, 5287 const Class& new_owner,
5293 GrowableObjectArray* trail = NULL) const; 5288 TrailPtr trail = NULL) const;
5294 virtual RawAbstractType* Canonicalize( 5289 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const;
5295 GrowableObjectArray* trail = NULL) const;
5296 5290
5297 virtual intptr_t Hash() const; 5291 virtual intptr_t Hash() const;
5298 5292
5299 // Return true if the receiver is contained in the trail. 5293 // Return true if the receiver is contained in the trail.
5300 // Otherwise, if the trail is null, allocate a trail, then add the receiver to 5294 // Otherwise, if the trail is null, allocate a trail, then add the receiver to
5301 // the trail and return false. 5295 // the trail and return false.
5302 bool TestAndAddToTrail(GrowableObjectArray** trail) const; 5296 bool TestAndAddToTrail(TrailPtr* trail) const;
5303 5297
5304 // Return true if the pair <receiver, buddy> is contained in the trail. 5298 // Return true if the pair <receiver, buddy> is contained in the trail.
5305 // Otherwise, if the trail is null, allocate a trail, add the pair <receiver, 5299 // Otherwise, if the trail is null, allocate a trail, add the pair <receiver,
5306 // buddy> to the trail and return false. 5300 // buddy> to the trail and return false.
5307 // The receiver may be added several times, each time with a different buddy. 5301 // The receiver may be added several times, each time with a different buddy.
5308 bool TestAndAddBuddyToTrail(GrowableObjectArray** trail, 5302 bool TestAndAddBuddyToTrail(TrailPtr* trail, const AbstractType& buddy) const;
5309 const Object& buddy) const;
5310 5303
5311 static intptr_t InstanceSize() { 5304 static intptr_t InstanceSize() {
5312 return RoundedAllocationSize(sizeof(RawTypeRef)); 5305 return RoundedAllocationSize(sizeof(RawTypeRef));
5313 } 5306 }
5314 5307
5315 static RawTypeRef* New(const AbstractType& type); 5308 static RawTypeRef* New(const AbstractType& type);
5316 5309
5317 private: 5310 private:
5318 static RawTypeRef* New(); 5311 static RawTypeRef* New();
5319 5312
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
5354 RawAbstractType* bound() const { return raw_ptr()->bound_; } 5347 RawAbstractType* bound() const { return raw_ptr()->bound_; }
5355 void set_bound(const AbstractType& value) const; 5348 void set_bound(const AbstractType& value) const;
5356 // Returns true if bounded_type is below upper_bound, otherwise return false 5349 // Returns true if bounded_type is below upper_bound, otherwise return false
5357 // and set bound_error if both bounded_type and upper_bound are instantiated. 5350 // and set bound_error if both bounded_type and upper_bound are instantiated.
5358 // If one or both are not instantiated, returning false only means that the 5351 // If one or both are not instantiated, returning false only means that the
5359 // bound cannot be checked yet and this is not an error. 5352 // bound cannot be checked yet and this is not an error.
5360 bool CheckBound(const AbstractType& bounded_type, 5353 bool CheckBound(const AbstractType& bounded_type,
5361 const AbstractType& upper_bound, 5354 const AbstractType& upper_bound,
5362 Error* bound_error) const; 5355 Error* bound_error) const;
5363 virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; } 5356 virtual intptr_t token_pos() const { return raw_ptr()->token_pos_; }
5364 virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const { 5357 virtual bool IsInstantiated(TrailPtr trail = NULL) const {
5365 return false; 5358 return false;
5366 } 5359 }
5367 virtual bool IsEquivalent(const Instance& other, 5360 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
5368 GrowableObjectArray* trail = NULL) const;
5369 virtual bool IsRecursive() const { return false; } 5361 virtual bool IsRecursive() const { return false; }
5370 virtual RawAbstractType* InstantiateFrom( 5362 virtual RawAbstractType* InstantiateFrom(
5371 const TypeArguments& instantiator_type_arguments, 5363 const TypeArguments& instantiator_type_arguments,
5372 Error* bound_error, 5364 Error* bound_error,
5373 GrowableObjectArray* trail = NULL) const; 5365 TrailPtr trail = NULL) const;
5374 virtual RawAbstractType* CloneUnfinalized() const; 5366 virtual RawAbstractType* CloneUnfinalized() const;
5375 virtual RawAbstractType* CloneUninstantiated( 5367 virtual RawAbstractType* CloneUninstantiated(
5376 const Class& new_owner, 5368 const Class& new_owner, TrailPtr trail = NULL) const;
5377 GrowableObjectArray* trail = NULL) const; 5369 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const {
5378 virtual RawAbstractType* Canonicalize(
5379 GrowableObjectArray* trail = NULL) const {
5380 return raw(); 5370 return raw();
5381 } 5371 }
5382 5372
5383 virtual intptr_t Hash() const; 5373 virtual intptr_t Hash() const;
5384 5374
5385 static intptr_t InstanceSize() { 5375 static intptr_t InstanceSize() {
5386 return RoundedAllocationSize(sizeof(RawTypeParameter)); 5376 return RoundedAllocationSize(sizeof(RawTypeParameter));
5387 } 5377 }
5388 5378
5389 static RawTypeParameter* New(const Class& parameterized_class, 5379 static RawTypeParameter* New(const Class& parameterized_class,
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
5437 return AbstractType::Handle(type()).arguments(); 5427 return AbstractType::Handle(type()).arguments();
5438 } 5428 }
5439 RawAbstractType* type() const { return raw_ptr()->type_; } 5429 RawAbstractType* type() const { return raw_ptr()->type_; }
5440 RawAbstractType* bound() const { return raw_ptr()->bound_; } 5430 RawAbstractType* bound() const { return raw_ptr()->bound_; }
5441 RawTypeParameter* type_parameter() const { 5431 RawTypeParameter* type_parameter() const {
5442 return raw_ptr()->type_parameter_; 5432 return raw_ptr()->type_parameter_;
5443 } 5433 }
5444 virtual intptr_t token_pos() const { 5434 virtual intptr_t token_pos() const {
5445 return AbstractType::Handle(type()).token_pos(); 5435 return AbstractType::Handle(type()).token_pos();
5446 } 5436 }
5447 virtual bool IsInstantiated(GrowableObjectArray* trail = NULL) const { 5437 virtual bool IsInstantiated(TrailPtr trail = NULL) const {
5448 // It is not possible to encounter an instantiated bounded type with an 5438 // It is not possible to encounter an instantiated bounded type with an
5449 // uninstantiated upper bound. Therefore, we do not need to check if the 5439 // uninstantiated upper bound. Therefore, we do not need to check if the
5450 // bound is instantiated. Moreover, doing so could lead into cycles, as in 5440 // bound is instantiated. Moreover, doing so could lead into cycles, as in
5451 // class C<T extends C<C>> { }. 5441 // class C<T extends C<C>> { }.
5452 return AbstractType::Handle(type()).IsInstantiated(); 5442 return AbstractType::Handle(type()).IsInstantiated();
5453 } 5443 }
5454 virtual bool IsEquivalent(const Instance& other, 5444 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const;
5455 GrowableObjectArray* trail = NULL) const;
5456 virtual bool IsRecursive() const; 5445 virtual bool IsRecursive() const;
5457 virtual RawAbstractType* InstantiateFrom( 5446 virtual RawAbstractType* InstantiateFrom(
5458 const TypeArguments& instantiator_type_arguments, 5447 const TypeArguments& instantiator_type_arguments,
5459 Error* bound_error, 5448 Error* bound_error,
5460 GrowableObjectArray* trail = NULL) const; 5449 TrailPtr trail = NULL) const;
5461 virtual RawAbstractType* CloneUnfinalized() const; 5450 virtual RawAbstractType* CloneUnfinalized() const;
5462 virtual RawAbstractType* CloneUninstantiated( 5451 virtual RawAbstractType* CloneUninstantiated(
5463 const Class& new_owner, 5452 const Class& new_owner, TrailPtr trail = NULL) const;
5464 GrowableObjectArray* trail = NULL) const; 5453 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const {
5465 virtual RawAbstractType* Canonicalize(
5466 GrowableObjectArray* trail = NULL) const {
5467 return raw(); 5454 return raw();
5468 } 5455 }
5469 5456
5470 virtual intptr_t Hash() const; 5457 virtual intptr_t Hash() const;
5471 5458
5472 static intptr_t InstanceSize() { 5459 static intptr_t InstanceSize() {
5473 return RoundedAllocationSize(sizeof(RawBoundedType)); 5460 return RoundedAllocationSize(sizeof(RawBoundedType));
5474 } 5461 }
5475 5462
5476 static RawBoundedType* New(const AbstractType& type, 5463 static RawBoundedType* New(const AbstractType& type,
(...skipping 2571 matching lines...) Expand 10 before | Expand all | Expand 10 after
8048 8035
8049 8036
8050 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, 8037 RawObject* MegamorphicCache::GetTargetFunction(const Array& array,
8051 intptr_t index) { 8038 intptr_t index) {
8052 return array.At((index * kEntryLength) + kTargetFunctionIndex); 8039 return array.At((index * kEntryLength) + kTargetFunctionIndex);
8053 } 8040 }
8054 8041
8055 } // namespace dart 8042 } // namespace dart
8056 8043
8057 #endif // VM_OBJECT_H_ 8044 #endif // VM_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/class_finalizer.cc ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698