| OLD | NEW |
| 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 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1125 static bool IsInFullSnapshot(RawClass* cls) { | 1125 static bool IsInFullSnapshot(RawClass* cls) { |
| 1126 NoSafepointScope no_safepoint; | 1126 NoSafepointScope no_safepoint; |
| 1127 return cls->ptr()->library_->ptr()->is_in_fullsnapshot_; | 1127 return cls->ptr()->library_->ptr()->is_in_fullsnapshot_; |
| 1128 } | 1128 } |
| 1129 | 1129 |
| 1130 // Check the subtype relationship. | 1130 // Check the subtype relationship. |
| 1131 bool IsSubtypeOf(const TypeArguments& type_arguments, | 1131 bool IsSubtypeOf(const TypeArguments& type_arguments, |
| 1132 const Class& other, | 1132 const Class& other, |
| 1133 const TypeArguments& other_type_arguments, | 1133 const TypeArguments& other_type_arguments, |
| 1134 Error* bound_error, | 1134 Error* bound_error, |
| 1135 TrailPtr bound_trail = NULL, | 1135 TrailPtr bound_trail, |
| 1136 Heap::Space space = Heap::kNew) const { | 1136 Heap::Space space) const { |
| 1137 return TypeTest(kIsSubtypeOf, | 1137 return TypeTest(kIsSubtypeOf, |
| 1138 type_arguments, | 1138 type_arguments, |
| 1139 other, | 1139 other, |
| 1140 other_type_arguments, | 1140 other_type_arguments, |
| 1141 bound_error, | 1141 bound_error, |
| 1142 bound_trail, | 1142 bound_trail, |
| 1143 space); | 1143 space); |
| 1144 } | 1144 } |
| 1145 | 1145 |
| 1146 // Check the 'more specific' relationship. | 1146 // Check the 'more specific' relationship. |
| 1147 bool IsMoreSpecificThan(const TypeArguments& type_arguments, | 1147 bool IsMoreSpecificThan(const TypeArguments& type_arguments, |
| 1148 const Class& other, | 1148 const Class& other, |
| 1149 const TypeArguments& other_type_arguments, | 1149 const TypeArguments& other_type_arguments, |
| 1150 Error* bound_error, | 1150 Error* bound_error, |
| 1151 TrailPtr bound_trail = NULL, | 1151 TrailPtr bound_trail, |
| 1152 Heap::Space space = Heap::kNew) const { | 1152 Heap::Space space) const { |
| 1153 return TypeTest(kIsMoreSpecificThan, | 1153 return TypeTest(kIsMoreSpecificThan, |
| 1154 type_arguments, | 1154 type_arguments, |
| 1155 other, | 1155 other, |
| 1156 other_type_arguments, | 1156 other_type_arguments, |
| 1157 bound_error, | 1157 bound_error, |
| 1158 bound_trail, | 1158 bound_trail, |
| 1159 space); | 1159 space); |
| 1160 } | 1160 } |
| 1161 | 1161 |
| 1162 // Check if this is the top level class. | 1162 // Check if this is the top level class. |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1577 bool IsRawInstantiatedRaw(intptr_t len) const { | 1577 bool IsRawInstantiatedRaw(intptr_t len) const { |
| 1578 return IsDynamicTypes(true, 0, len); | 1578 return IsDynamicTypes(true, 0, len); |
| 1579 } | 1579 } |
| 1580 | 1580 |
| 1581 // Check the subtype relationship, considering only a subvector of length | 1581 // Check the subtype relationship, considering only a subvector of length |
| 1582 // 'len' starting at 'from_index'. | 1582 // 'len' starting at 'from_index'. |
| 1583 bool IsSubtypeOf(const TypeArguments& other, | 1583 bool IsSubtypeOf(const TypeArguments& other, |
| 1584 intptr_t from_index, | 1584 intptr_t from_index, |
| 1585 intptr_t len, | 1585 intptr_t len, |
| 1586 Error* bound_error, | 1586 Error* bound_error, |
| 1587 TrailPtr bound_trail = NULL, | 1587 TrailPtr bound_trail, |
| 1588 Heap::Space space = Heap::kNew) const { | 1588 Heap::Space space) const { |
| 1589 return TypeTest(kIsSubtypeOf, other, from_index, len, | 1589 return TypeTest(kIsSubtypeOf, other, from_index, len, |
| 1590 bound_error, bound_trail, space); | 1590 bound_error, bound_trail, space); |
| 1591 } | 1591 } |
| 1592 | 1592 |
| 1593 // Check the 'more specific' relationship, considering only a subvector of | 1593 // Check the 'more specific' relationship, considering only a subvector of |
| 1594 // length 'len' starting at 'from_index'. | 1594 // length 'len' starting at 'from_index'. |
| 1595 bool IsMoreSpecificThan(const TypeArguments& other, | 1595 bool IsMoreSpecificThan(const TypeArguments& other, |
| 1596 intptr_t from_index, | 1596 intptr_t from_index, |
| 1597 intptr_t len, | 1597 intptr_t len, |
| 1598 Error* bound_error, | 1598 Error* bound_error, |
| 1599 TrailPtr bound_trail = NULL, | 1599 TrailPtr bound_trail, |
| 1600 Heap::Space space = Heap::kNew) const { | 1600 Heap::Space space) const { |
| 1601 return TypeTest(kIsMoreSpecificThan, other, from_index, len, | 1601 return TypeTest(kIsMoreSpecificThan, other, from_index, len, |
| 1602 bound_error, bound_trail, space); | 1602 bound_error, bound_trail, space); |
| 1603 } | 1603 } |
| 1604 | 1604 |
| 1605 // Check if the vectors are equal (they may be null). | 1605 // Check if the vectors are equal (they may be null). |
| 1606 bool Equals(const TypeArguments& other) const { | 1606 bool Equals(const TypeArguments& other) const { |
| 1607 return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length()); | 1607 return IsSubvectorEquivalent(other, 0, IsNull() ? 0 : Length()); |
| 1608 } | 1608 } |
| 1609 | 1609 |
| 1610 bool IsEquivalent(const TypeArguments& other, TrailPtr trail = NULL) const { | 1610 bool IsEquivalent(const TypeArguments& other, TrailPtr trail = NULL) const { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1648 RawTypeArguments* Canonicalize(TrailPtr trail = NULL) const; | 1648 RawTypeArguments* Canonicalize(TrailPtr trail = NULL) const; |
| 1649 | 1649 |
| 1650 // Return 'this' if this type argument vector is instantiated, i.e. if it does | 1650 // Return 'this' if this type argument vector is instantiated, i.e. if it does |
| 1651 // not refer to type parameters. Otherwise, return a new type argument vector | 1651 // not refer to type parameters. Otherwise, return a new type argument vector |
| 1652 // where each reference to a type parameter is replaced with the corresponding | 1652 // where each reference to a type parameter is replaced with the corresponding |
| 1653 // type of the instantiator type argument vector. | 1653 // type of the instantiator type argument vector. |
| 1654 // If bound_error is not NULL, it may be set to reflect a bound error. | 1654 // If bound_error is not NULL, it may be set to reflect a bound error. |
| 1655 RawTypeArguments* InstantiateFrom( | 1655 RawTypeArguments* InstantiateFrom( |
| 1656 const TypeArguments& instantiator_type_arguments, | 1656 const TypeArguments& instantiator_type_arguments, |
| 1657 Error* bound_error, | 1657 Error* bound_error, |
| 1658 TrailPtr instantiation_trail = NULL, | 1658 TrailPtr instantiation_trail, |
| 1659 TrailPtr bound_trail = NULL, | 1659 TrailPtr bound_trail, |
| 1660 Heap::Space space = Heap::kNew) const; | 1660 Heap::Space space) const; |
| 1661 | 1661 |
| 1662 // Runtime instantiation with canonicalization. Not to be used during type | 1662 // Runtime instantiation with canonicalization. Not to be used during type |
| 1663 // finalization at compile time. | 1663 // finalization at compile time. |
| 1664 RawTypeArguments* InstantiateAndCanonicalizeFrom( | 1664 RawTypeArguments* InstantiateAndCanonicalizeFrom( |
| 1665 const TypeArguments& instantiator_type_arguments, | 1665 const TypeArguments& instantiator_type_arguments, |
| 1666 Error* bound_error) const; | 1666 Error* bound_error) const; |
| 1667 | 1667 |
| 1668 // Return true if this type argument vector has cached instantiations. | 1668 // Return true if this type argument vector has cached instantiations. |
| 1669 bool HasInstantiations() const; | 1669 bool HasInstantiations() const; |
| 1670 | 1670 |
| (...skipping 815 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2486 // other function. | 2486 // other function. |
| 2487 bool HasCompatibleParametersWith(const Function& other, | 2487 bool HasCompatibleParametersWith(const Function& other, |
| 2488 Error* bound_error) const; | 2488 Error* bound_error) const; |
| 2489 | 2489 |
| 2490 // Returns true if the type of this function is a subtype of the type of | 2490 // Returns true if the type of this function is a subtype of the type of |
| 2491 // the other function. | 2491 // the other function. |
| 2492 bool IsSubtypeOf(const TypeArguments& type_arguments, | 2492 bool IsSubtypeOf(const TypeArguments& type_arguments, |
| 2493 const Function& other, | 2493 const Function& other, |
| 2494 const TypeArguments& other_type_arguments, | 2494 const TypeArguments& other_type_arguments, |
| 2495 Error* bound_error, | 2495 Error* bound_error, |
| 2496 Heap::Space space = Heap::kNew) const { | 2496 Heap::Space space) const { |
| 2497 return TypeTest(kIsSubtypeOf, | 2497 return TypeTest(kIsSubtypeOf, |
| 2498 type_arguments, | 2498 type_arguments, |
| 2499 other, | 2499 other, |
| 2500 other_type_arguments, | 2500 other_type_arguments, |
| 2501 bound_error, | 2501 bound_error, |
| 2502 space); | 2502 space); |
| 2503 } | 2503 } |
| 2504 | 2504 |
| 2505 // Returns true if the type of this function is more specific than the type of | 2505 // Returns true if the type of this function is more specific than the type of |
| 2506 // the other function. | 2506 // the other function. |
| 2507 bool IsMoreSpecificThan(const TypeArguments& type_arguments, | 2507 bool IsMoreSpecificThan(const TypeArguments& type_arguments, |
| 2508 const Function& other, | 2508 const Function& other, |
| 2509 const TypeArguments& other_type_arguments, | 2509 const TypeArguments& other_type_arguments, |
| 2510 Error* bound_error, | 2510 Error* bound_error, |
| 2511 Heap::Space space = Heap::kNew) const { | 2511 Heap::Space space) const { |
| 2512 return TypeTest(kIsMoreSpecificThan, | 2512 return TypeTest(kIsMoreSpecificThan, |
| 2513 type_arguments, | 2513 type_arguments, |
| 2514 other, | 2514 other, |
| 2515 other_type_arguments, | 2515 other_type_arguments, |
| 2516 bound_error, | 2516 bound_error, |
| 2517 space); | 2517 space); |
| 2518 } | 2518 } |
| 2519 | 2519 |
| 2520 // Check the subtype or 'more specific' relationship. | 2520 // Check the subtype or 'more specific' relationship. |
| 2521 bool TypeTest(TypeTestKind test_kind, | 2521 bool TypeTest(TypeTestKind test_kind, |
| (...skipping 2746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5268 } | 5268 } |
| 5269 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; | 5269 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| 5270 virtual bool IsRecursive() const; | 5270 virtual bool IsRecursive() const; |
| 5271 | 5271 |
| 5272 // Instantiate this type using the given type argument vector. | 5272 // Instantiate this type using the given type argument vector. |
| 5273 // Return a new type, or return 'this' if it is already instantiated. | 5273 // Return a new type, or return 'this' if it is already instantiated. |
| 5274 // If bound_error is not NULL, it may be set to reflect a bound error. | 5274 // If bound_error is not NULL, it may be set to reflect a bound error. |
| 5275 virtual RawAbstractType* InstantiateFrom( | 5275 virtual RawAbstractType* InstantiateFrom( |
| 5276 const TypeArguments& instantiator_type_arguments, | 5276 const TypeArguments& instantiator_type_arguments, |
| 5277 Error* bound_error, | 5277 Error* bound_error, |
| 5278 TrailPtr instantiation_trail = NULL, | 5278 TrailPtr instantiation_trail, |
| 5279 TrailPtr bound_trail = NULL, | 5279 TrailPtr bound_trail, |
| 5280 Heap::Space space = Heap::kNew) const; | 5280 Heap::Space space) const; |
| 5281 | 5281 |
| 5282 // Return a clone of this unfinalized type or the type itself if it is | 5282 // Return a clone of this unfinalized type or the type itself if it is |
| 5283 // already finalized. Apply recursively to type arguments, i.e. finalized | 5283 // already finalized. Apply recursively to type arguments, i.e. finalized |
| 5284 // type arguments of an unfinalized type are not cloned, but shared. | 5284 // type arguments of an unfinalized type are not cloned, but shared. |
| 5285 virtual RawAbstractType* CloneUnfinalized() const; | 5285 virtual RawAbstractType* CloneUnfinalized() const; |
| 5286 | 5286 |
| 5287 // Return a clone of this uninstantiated type where all references to type | 5287 // Return a clone of this uninstantiated type where all references to type |
| 5288 // parameters are replaced with references to type parameters of the same name | 5288 // parameters are replaced with references to type parameters of the same name |
| 5289 // but belonging to the new owner class. | 5289 // but belonging to the new owner class. |
| 5290 // Apply recursively to type arguments, i.e. instantiated type arguments of | 5290 // Apply recursively to type arguments, i.e. instantiated type arguments of |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5383 | 5383 |
| 5384 // Check if this type represents the 'String' type. | 5384 // Check if this type represents the 'String' type. |
| 5385 bool IsStringType() const; | 5385 bool IsStringType() const; |
| 5386 | 5386 |
| 5387 // Check if this type represents the Dart 'Function' type. | 5387 // Check if this type represents the Dart 'Function' type. |
| 5388 bool IsDartFunctionType() const; | 5388 bool IsDartFunctionType() const; |
| 5389 | 5389 |
| 5390 // Check the subtype relationship. | 5390 // Check the subtype relationship. |
| 5391 bool IsSubtypeOf(const AbstractType& other, | 5391 bool IsSubtypeOf(const AbstractType& other, |
| 5392 Error* bound_error, | 5392 Error* bound_error, |
| 5393 TrailPtr bound_trail = NULL, | 5393 TrailPtr bound_trail, |
| 5394 Heap::Space space = Heap::kNew) const { | 5394 Heap::Space space) const { |
| 5395 return TypeTest(kIsSubtypeOf, other, bound_error, bound_trail, space); | 5395 return TypeTest(kIsSubtypeOf, other, bound_error, bound_trail, space); |
| 5396 } | 5396 } |
| 5397 | 5397 |
| 5398 // Check the 'more specific' relationship. | 5398 // Check the 'more specific' relationship. |
| 5399 bool IsMoreSpecificThan(const AbstractType& other, | 5399 bool IsMoreSpecificThan(const AbstractType& other, |
| 5400 Error* bound_error, | 5400 Error* bound_error, |
| 5401 TrailPtr bound_trail = NULL, | 5401 TrailPtr bound_trail, |
| 5402 Heap::Space space = Heap::kNew) const { | 5402 Heap::Space space) const { |
| 5403 return TypeTest(kIsMoreSpecificThan, other, | 5403 return TypeTest(kIsMoreSpecificThan, other, |
| 5404 bound_error, bound_trail, space); | 5404 bound_error, bound_trail, space); |
| 5405 } | 5405 } |
| 5406 | 5406 |
| 5407 private: | 5407 private: |
| 5408 // Check the subtype or 'more specific' relationship. | 5408 // Check the subtype or 'more specific' relationship. |
| 5409 bool TypeTest(TypeTestKind test_kind, | 5409 bool TypeTest(TypeTestKind test_kind, |
| 5410 const AbstractType& other, | 5410 const AbstractType& other, |
| 5411 Error* bound_error, | 5411 Error* bound_error, |
| 5412 TrailPtr bound_trail, | 5412 TrailPtr bound_trail, |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5461 virtual RawUnresolvedClass* unresolved_class() const; | 5461 virtual RawUnresolvedClass* unresolved_class() const; |
| 5462 virtual RawTypeArguments* arguments() const { return raw_ptr()->arguments_; } | 5462 virtual RawTypeArguments* arguments() const { return raw_ptr()->arguments_; } |
| 5463 virtual void set_arguments(const TypeArguments& value) const; | 5463 virtual void set_arguments(const TypeArguments& value) const; |
| 5464 virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } | 5464 virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
| 5465 virtual bool IsInstantiated(TrailPtr trail = NULL) const; | 5465 virtual bool IsInstantiated(TrailPtr trail = NULL) const; |
| 5466 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; | 5466 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| 5467 virtual bool IsRecursive() const; | 5467 virtual bool IsRecursive() const; |
| 5468 virtual RawAbstractType* InstantiateFrom( | 5468 virtual RawAbstractType* InstantiateFrom( |
| 5469 const TypeArguments& instantiator_type_arguments, | 5469 const TypeArguments& instantiator_type_arguments, |
| 5470 Error* bound_error, | 5470 Error* bound_error, |
| 5471 TrailPtr instantiation_trail = NULL, | 5471 TrailPtr instantiation_trail, |
| 5472 TrailPtr bound_trail = NULL, | 5472 TrailPtr bound_trail, |
| 5473 Heap::Space space = Heap::kNew) const; | 5473 Heap::Space space) const; |
| 5474 virtual RawAbstractType* CloneUnfinalized() const; | 5474 virtual RawAbstractType* CloneUnfinalized() const; |
| 5475 virtual RawAbstractType* CloneUninstantiated( | 5475 virtual RawAbstractType* CloneUninstantiated( |
| 5476 const Class& new_owner, | 5476 const Class& new_owner, |
| 5477 TrailPtr trail = NULL) const; | 5477 TrailPtr trail = NULL) const; |
| 5478 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const; | 5478 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const; |
| 5479 | 5479 |
| 5480 virtual intptr_t Hash() const; | 5480 virtual intptr_t Hash() const; |
| 5481 | 5481 |
| 5482 static intptr_t InstanceSize() { | 5482 static intptr_t InstanceSize() { |
| 5483 return RoundedAllocationSize(sizeof(RawType)); | 5483 return RoundedAllocationSize(sizeof(RawType)); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5609 virtual RawTypeArguments* arguments() const { return raw_ptr()->arguments_; } | 5609 virtual RawTypeArguments* arguments() const { return raw_ptr()->arguments_; } |
| 5610 virtual void set_arguments(const TypeArguments& value) const; | 5610 virtual void set_arguments(const TypeArguments& value) const; |
| 5611 RawFunction* signature() const { return raw_ptr()->signature_; } | 5611 RawFunction* signature() const { return raw_ptr()->signature_; } |
| 5612 virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } | 5612 virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
| 5613 virtual bool IsInstantiated(TrailPtr trail = NULL) const; | 5613 virtual bool IsInstantiated(TrailPtr trail = NULL) const; |
| 5614 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; | 5614 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| 5615 virtual bool IsRecursive() const; | 5615 virtual bool IsRecursive() const; |
| 5616 virtual RawAbstractType* InstantiateFrom( | 5616 virtual RawAbstractType* InstantiateFrom( |
| 5617 const TypeArguments& instantiator_type_arguments, | 5617 const TypeArguments& instantiator_type_arguments, |
| 5618 Error* malformed_error, | 5618 Error* malformed_error, |
| 5619 TrailPtr instantiation_trail = NULL, | 5619 TrailPtr instantiation_trail, |
| 5620 TrailPtr bound_trail = NULL, | 5620 TrailPtr bound_trail, |
| 5621 Heap::Space space = Heap::kNew) const; | 5621 Heap::Space space) const; |
| 5622 virtual RawAbstractType* CloneUnfinalized() const; | 5622 virtual RawAbstractType* CloneUnfinalized() const; |
| 5623 virtual RawAbstractType* CloneUninstantiated( | 5623 virtual RawAbstractType* CloneUninstantiated( |
| 5624 const Class& new_owner, | 5624 const Class& new_owner, |
| 5625 TrailPtr trail = NULL) const; | 5625 TrailPtr trail = NULL) const; |
| 5626 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const; | 5626 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const; |
| 5627 | 5627 |
| 5628 virtual intptr_t Hash() const; | 5628 virtual intptr_t Hash() const; |
| 5629 | 5629 |
| 5630 static intptr_t InstanceSize() { | 5630 static intptr_t InstanceSize() { |
| 5631 return RoundedAllocationSize(sizeof(RawFunctionType)); | 5631 return RoundedAllocationSize(sizeof(RawFunctionType)); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5686 virtual TokenPosition token_pos() const { | 5686 virtual TokenPosition token_pos() const { |
| 5687 return AbstractType::Handle(type()).token_pos(); | 5687 return AbstractType::Handle(type()).token_pos(); |
| 5688 } | 5688 } |
| 5689 virtual bool IsInstantiated(TrailPtr trail = NULL) const; | 5689 virtual bool IsInstantiated(TrailPtr trail = NULL) const; |
| 5690 virtual bool IsEquivalent(const Instance& other, | 5690 virtual bool IsEquivalent(const Instance& other, |
| 5691 TrailPtr trail = NULL) const; | 5691 TrailPtr trail = NULL) const; |
| 5692 virtual bool IsRecursive() const { return true; } | 5692 virtual bool IsRecursive() const { return true; } |
| 5693 virtual RawTypeRef* InstantiateFrom( | 5693 virtual RawTypeRef* InstantiateFrom( |
| 5694 const TypeArguments& instantiator_type_arguments, | 5694 const TypeArguments& instantiator_type_arguments, |
| 5695 Error* bound_error, | 5695 Error* bound_error, |
| 5696 TrailPtr instantiation_trail = NULL, | 5696 TrailPtr instantiation_trail, |
| 5697 TrailPtr bound_trail = NULL, | 5697 TrailPtr bound_trail, |
| 5698 Heap::Space space = Heap::kNew) const; | 5698 Heap::Space space) const; |
| 5699 virtual RawTypeRef* CloneUninstantiated( | 5699 virtual RawTypeRef* CloneUninstantiated( |
| 5700 const Class& new_owner, | 5700 const Class& new_owner, |
| 5701 TrailPtr trail = NULL) const; | 5701 TrailPtr trail = NULL) const; |
| 5702 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const; | 5702 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const; |
| 5703 | 5703 |
| 5704 virtual intptr_t Hash() const; | 5704 virtual intptr_t Hash() const; |
| 5705 | 5705 |
| 5706 static intptr_t InstanceSize() { | 5706 static intptr_t InstanceSize() { |
| 5707 return RoundedAllocationSize(sizeof(RawTypeRef)); | 5707 return RoundedAllocationSize(sizeof(RawTypeRef)); |
| 5708 } | 5708 } |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5748 void set_index(intptr_t value) const; | 5748 void set_index(intptr_t value) const; |
| 5749 RawAbstractType* bound() const { return raw_ptr()->bound_; } | 5749 RawAbstractType* bound() const { return raw_ptr()->bound_; } |
| 5750 void set_bound(const AbstractType& value) const; | 5750 void set_bound(const AbstractType& value) const; |
| 5751 // Returns true if bounded_type is below upper_bound, otherwise return false | 5751 // Returns true if bounded_type is below upper_bound, otherwise return false |
| 5752 // and set bound_error if both bounded_type and upper_bound are instantiated. | 5752 // and set bound_error if both bounded_type and upper_bound are instantiated. |
| 5753 // If one or both are not instantiated, returning false only means that the | 5753 // If one or both are not instantiated, returning false only means that the |
| 5754 // bound cannot be checked yet and this is not an error. | 5754 // bound cannot be checked yet and this is not an error. |
| 5755 bool CheckBound(const AbstractType& bounded_type, | 5755 bool CheckBound(const AbstractType& bounded_type, |
| 5756 const AbstractType& upper_bound, | 5756 const AbstractType& upper_bound, |
| 5757 Error* bound_error, | 5757 Error* bound_error, |
| 5758 TrailPtr bound_trail = NULL, | 5758 TrailPtr bound_trail, |
| 5759 Heap::Space space = Heap::kNew) const; | 5759 Heap::Space space) const; |
| 5760 virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } | 5760 virtual TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
| 5761 virtual bool IsInstantiated(TrailPtr trail = NULL) const { | 5761 virtual bool IsInstantiated(TrailPtr trail = NULL) const { |
| 5762 return false; | 5762 return false; |
| 5763 } | 5763 } |
| 5764 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; | 5764 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| 5765 virtual bool IsRecursive() const { return false; } | 5765 virtual bool IsRecursive() const { return false; } |
| 5766 virtual RawAbstractType* InstantiateFrom( | 5766 virtual RawAbstractType* InstantiateFrom( |
| 5767 const TypeArguments& instantiator_type_arguments, | 5767 const TypeArguments& instantiator_type_arguments, |
| 5768 Error* bound_error, | 5768 Error* bound_error, |
| 5769 TrailPtr instantiation_trail = NULL, | 5769 TrailPtr instantiation_trail, |
| 5770 TrailPtr bound_trail = NULL, | 5770 TrailPtr bound_trail, |
| 5771 Heap::Space space = Heap::kNew) const; | 5771 Heap::Space space) const; |
| 5772 virtual RawAbstractType* CloneUnfinalized() const; | 5772 virtual RawAbstractType* CloneUnfinalized() const; |
| 5773 virtual RawAbstractType* CloneUninstantiated( | 5773 virtual RawAbstractType* CloneUninstantiated( |
| 5774 const Class& new_owner, TrailPtr trail = NULL) const; | 5774 const Class& new_owner, TrailPtr trail = NULL) const; |
| 5775 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const { | 5775 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const { |
| 5776 return raw(); | 5776 return raw(); |
| 5777 } | 5777 } |
| 5778 | 5778 |
| 5779 virtual intptr_t Hash() const; | 5779 virtual intptr_t Hash() const; |
| 5780 | 5780 |
| 5781 static intptr_t InstanceSize() { | 5781 static intptr_t InstanceSize() { |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5845 // uninstantiated upper bound. Therefore, we do not need to check if the | 5845 // uninstantiated upper bound. Therefore, we do not need to check if the |
| 5846 // bound is instantiated. Moreover, doing so could lead into cycles, as in | 5846 // bound is instantiated. Moreover, doing so could lead into cycles, as in |
| 5847 // class C<T extends C<C>> { }. | 5847 // class C<T extends C<C>> { }. |
| 5848 return AbstractType::Handle(type()).IsInstantiated(); | 5848 return AbstractType::Handle(type()).IsInstantiated(); |
| 5849 } | 5849 } |
| 5850 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; | 5850 virtual bool IsEquivalent(const Instance& other, TrailPtr trail = NULL) const; |
| 5851 virtual bool IsRecursive() const; | 5851 virtual bool IsRecursive() const; |
| 5852 virtual RawAbstractType* InstantiateFrom( | 5852 virtual RawAbstractType* InstantiateFrom( |
| 5853 const TypeArguments& instantiator_type_arguments, | 5853 const TypeArguments& instantiator_type_arguments, |
| 5854 Error* bound_error, | 5854 Error* bound_error, |
| 5855 TrailPtr instantiation_trail = NULL, | 5855 TrailPtr instantiation_trail, |
| 5856 TrailPtr bound_trail = NULL, | 5856 TrailPtr bound_trail, |
| 5857 Heap::Space space = Heap::kNew) const; | 5857 Heap::Space space) const; |
| 5858 virtual RawAbstractType* CloneUnfinalized() const; | 5858 virtual RawAbstractType* CloneUnfinalized() const; |
| 5859 virtual RawAbstractType* CloneUninstantiated( | 5859 virtual RawAbstractType* CloneUninstantiated( |
| 5860 const Class& new_owner, TrailPtr trail = NULL) const; | 5860 const Class& new_owner, TrailPtr trail = NULL) const; |
| 5861 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const { | 5861 virtual RawAbstractType* Canonicalize(TrailPtr trail = NULL) const { |
| 5862 return raw(); | 5862 return raw(); |
| 5863 } | 5863 } |
| 5864 | 5864 |
| 5865 virtual intptr_t Hash() const; | 5865 virtual intptr_t Hash() const; |
| 5866 | 5866 |
| 5867 static intptr_t InstanceSize() { | 5867 static intptr_t InstanceSize() { |
| (...skipping 2562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8430 | 8430 |
| 8431 | 8431 |
| 8432 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 8432 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
| 8433 intptr_t index) { | 8433 intptr_t index) { |
| 8434 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 8434 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
| 8435 } | 8435 } |
| 8436 | 8436 |
| 8437 } // namespace dart | 8437 } // namespace dart |
| 8438 | 8438 |
| 8439 #endif // VM_OBJECT_H_ | 8439 #endif // VM_OBJECT_H_ |
| OLD | NEW |