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 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1042 static intptr_t type_arguments_field_offset_in_words_offset() { | 1042 static intptr_t type_arguments_field_offset_in_words_offset() { |
1043 return OFFSET_OF(RawClass, type_arguments_field_offset_in_words_); | 1043 return OFFSET_OF(RawClass, type_arguments_field_offset_in_words_); |
1044 } | 1044 } |
1045 | 1045 |
1046 RawType* CanonicalType() const { | 1046 RawType* CanonicalType() const { |
1047 if ((NumTypeArguments() == 0) && !IsSignatureClass()) { | 1047 if ((NumTypeArguments() == 0) && !IsSignatureClass()) { |
1048 return reinterpret_cast<RawType*>(raw_ptr()->canonical_types_); | 1048 return reinterpret_cast<RawType*>(raw_ptr()->canonical_types_); |
1049 } | 1049 } |
1050 return reinterpret_cast<RawType*>(Object::null()); | 1050 return reinterpret_cast<RawType*>(Object::null()); |
1051 } | 1051 } |
| 1052 static intptr_t canonical_types_offset() { |
| 1053 return OFFSET_OF(RawClass, canonical_types_); |
| 1054 } |
1052 | 1055 |
1053 // The super type of this class, Object type if not explicitly specified. | 1056 // The super type of this class, Object type if not explicitly specified. |
1054 // Note that the super type may be bounded, as in this example: | 1057 // Note that the super type may be bounded, as in this example: |
1055 // class C<T> extends S<T> { }; class S<T extends num> { }; | 1058 // class C<T> extends S<T> { }; class S<T extends num> { }; |
1056 RawAbstractType* super_type() const { return raw_ptr()->super_type_; } | 1059 RawAbstractType* super_type() const { return raw_ptr()->super_type_; } |
1057 void set_super_type(const AbstractType& value) const; | 1060 void set_super_type(const AbstractType& value) const; |
1058 static intptr_t super_type_offset() { | 1061 static intptr_t super_type_offset() { |
1059 return OFFSET_OF(RawClass, super_type_); | 1062 return OFFSET_OF(RawClass, super_type_); |
1060 } | 1063 } |
1061 | 1064 |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1435 // functions_hash_table is in use iff there are at least this many functions. | 1438 // functions_hash_table is in use iff there are at least this many functions. |
1436 static const intptr_t kFunctionLookupHashTreshold = 16; | 1439 static const intptr_t kFunctionLookupHashTreshold = 16; |
1437 | 1440 |
1438 // Initial value for the cached number of type arguments. | 1441 // Initial value for the cached number of type arguments. |
1439 static const intptr_t kUnknownNumTypeArguments = -1; | 1442 static const intptr_t kUnknownNumTypeArguments = -1; |
1440 | 1443 |
1441 int16_t num_type_arguments() const { | 1444 int16_t num_type_arguments() const { |
1442 return raw_ptr()->num_type_arguments_; | 1445 return raw_ptr()->num_type_arguments_; |
1443 } | 1446 } |
1444 void set_num_type_arguments(intptr_t value) const; | 1447 void set_num_type_arguments(intptr_t value) const; |
| 1448 static intptr_t num_type_arguments_offset() { |
| 1449 return OFFSET_OF(RawClass, num_type_arguments_); |
| 1450 } |
1445 | 1451 |
1446 int16_t num_own_type_arguments() const { | 1452 int16_t num_own_type_arguments() const { |
1447 return raw_ptr()->num_own_type_arguments_; | 1453 return raw_ptr()->num_own_type_arguments_; |
1448 } | 1454 } |
1449 void set_num_own_type_arguments(intptr_t value) const; | 1455 void set_num_own_type_arguments(intptr_t value) const; |
1450 | 1456 |
1451 // Assigns empty array to all raw class array fields. | 1457 // Assigns empty array to all raw class array fields. |
1452 void InitEmptyFields(); | 1458 void InitEmptyFields(); |
1453 | 1459 |
1454 static RawFunction* CheckFunctionType(const Function& func, MemberKind kind); | 1460 static RawFunction* CheckFunctionType(const Function& func, MemberKind kind); |
(...skipping 22 matching lines...) Expand all Loading... |
1477 const TypeArguments& type_arguments, | 1483 const TypeArguments& type_arguments, |
1478 const Class& other, | 1484 const Class& other, |
1479 const TypeArguments& other_type_arguments, | 1485 const TypeArguments& other_type_arguments, |
1480 Error* bound_error); | 1486 Error* bound_error); |
1481 | 1487 |
1482 FINAL_HEAP_OBJECT_IMPLEMENTATION(Class, Object); | 1488 FINAL_HEAP_OBJECT_IMPLEMENTATION(Class, Object); |
1483 friend class AbstractType; | 1489 friend class AbstractType; |
1484 friend class Instance; | 1490 friend class Instance; |
1485 friend class Object; | 1491 friend class Object; |
1486 friend class Type; | 1492 friend class Type; |
| 1493 friend class Intrinsifier; |
1487 }; | 1494 }; |
1488 | 1495 |
1489 | 1496 |
1490 // Unresolved class is used for storing unresolved names which will be resolved | 1497 // Unresolved class is used for storing unresolved names which will be resolved |
1491 // to a class after all classes have been loaded and finalized. | 1498 // to a class after all classes have been loaded and finalized. |
1492 class UnresolvedClass : public Object { | 1499 class UnresolvedClass : public Object { |
1493 public: | 1500 public: |
1494 RawLibraryPrefix* library_prefix() const { | 1501 RawLibraryPrefix* library_prefix() const { |
1495 return raw_ptr()->library_prefix_; | 1502 return raw_ptr()->library_prefix_; |
1496 } | 1503 } |
(...skipping 6486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7983 | 7990 |
7984 | 7991 |
7985 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, | 7992 RawObject* MegamorphicCache::GetTargetFunction(const Array& array, |
7986 intptr_t index) { | 7993 intptr_t index) { |
7987 return array.At((index * kEntryLength) + kTargetFunctionIndex); | 7994 return array.At((index * kEntryLength) + kTargetFunctionIndex); |
7988 } | 7995 } |
7989 | 7996 |
7990 } // namespace dart | 7997 } // namespace dart |
7991 | 7998 |
7992 #endif // VM_OBJECT_H_ | 7999 #endif // VM_OBJECT_H_ |
OLD | NEW |