| 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 RUNTIME_VM_OBJECT_H_ | 5 #ifndef RUNTIME_VM_OBJECT_H_ |
| 6 #define RUNTIME_VM_OBJECT_H_ | 6 #define RUNTIME_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 536 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 547 static RawClass* megamorphic_cache_class() { | 547 static RawClass* megamorphic_cache_class() { |
| 548 return megamorphic_cache_class_; | 548 return megamorphic_cache_class_; |
| 549 } | 549 } |
| 550 static RawClass* subtypetestcache_class() { return subtypetestcache_class_; } | 550 static RawClass* subtypetestcache_class() { return subtypetestcache_class_; } |
| 551 | 551 |
| 552 // Initialize the VM isolate. | 552 // Initialize the VM isolate. |
| 553 static void InitNull(Isolate* isolate); | 553 static void InitNull(Isolate* isolate); |
| 554 static void InitOnce(Isolate* isolate); | 554 static void InitOnce(Isolate* isolate); |
| 555 static void FinalizeVMIsolate(Isolate* isolate); | 555 static void FinalizeVMIsolate(Isolate* isolate); |
| 556 | 556 |
| 557 // Initialize a new isolate either from source or from a snapshot. | 557 // Initialize a new isolate either from a Kernel IR, from source, or from a |
| 558 static RawError* Init(Isolate* isolate); | 558 // snapshot. |
| 559 static RawError* Init(Isolate* isolate, |
| 560 const uint8_t* kernel, |
| 561 intptr_t kernel_length); |
| 559 | 562 |
| 560 static void MakeUnusedSpaceTraversable(const Object& obj, | 563 static void MakeUnusedSpaceTraversable(const Object& obj, |
| 561 intptr_t original_size, | 564 intptr_t original_size, |
| 562 intptr_t used_size); | 565 intptr_t used_size); |
| 563 | 566 |
| 564 static intptr_t InstanceSize() { | 567 static intptr_t InstanceSize() { |
| 565 return RoundedAllocationSize(sizeof(RawObject)); | 568 return RoundedAllocationSize(sizeof(RawObject)); |
| 566 } | 569 } |
| 567 | 570 |
| 568 static void VerifyBuiltinVtables(); | 571 static void VerifyBuiltinVtables(); |
| (...skipping 985 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1554 friend class Type; | 1557 friend class Type; |
| 1555 friend class Intrinsifier; | 1558 friend class Intrinsifier; |
| 1556 friend class Precompiler; | 1559 friend class Precompiler; |
| 1557 }; | 1560 }; |
| 1558 | 1561 |
| 1559 | 1562 |
| 1560 // Unresolved class is used for storing unresolved names which will be resolved | 1563 // Unresolved class is used for storing unresolved names which will be resolved |
| 1561 // to a class after all classes have been loaded and finalized. | 1564 // to a class after all classes have been loaded and finalized. |
| 1562 class UnresolvedClass : public Object { | 1565 class UnresolvedClass : public Object { |
| 1563 public: | 1566 public: |
| 1564 RawLibraryPrefix* library_prefix() const { | 1567 RawObject* library_or_library_prefix() const { |
| 1565 return raw_ptr()->library_prefix_; | 1568 return raw_ptr()->library_or_library_prefix_; |
| 1566 } | 1569 } |
| 1567 RawString* ident() const { return raw_ptr()->ident_; } | 1570 RawString* ident() const { return raw_ptr()->ident_; } |
| 1568 TokenPosition token_pos() const { return raw_ptr()->token_pos_; } | 1571 TokenPosition token_pos() const { return raw_ptr()->token_pos_; } |
| 1569 | 1572 |
| 1570 RawString* Name() const; | 1573 RawString* Name() const; |
| 1571 | 1574 |
| 1572 static intptr_t InstanceSize() { | 1575 static intptr_t InstanceSize() { |
| 1573 return RoundedAllocationSize(sizeof(RawUnresolvedClass)); | 1576 return RoundedAllocationSize(sizeof(RawUnresolvedClass)); |
| 1574 } | 1577 } |
| 1575 | 1578 |
| 1576 static RawUnresolvedClass* New(const LibraryPrefix& library_prefix, | 1579 static RawUnresolvedClass* New(const Object& library_prefix, |
| 1577 const String& ident, | 1580 const String& ident, |
| 1578 TokenPosition token_pos); | 1581 TokenPosition token_pos); |
| 1579 | 1582 |
| 1580 private: | 1583 private: |
| 1581 void set_library_prefix(const LibraryPrefix& library_prefix) const; | 1584 void set_library_or_library_prefix(const Object& library_prefix) const; |
| 1582 void set_ident(const String& ident) const; | 1585 void set_ident(const String& ident) const; |
| 1583 void set_token_pos(TokenPosition token_pos) const; | 1586 void set_token_pos(TokenPosition token_pos) const; |
| 1584 | 1587 |
| 1585 static RawUnresolvedClass* New(); | 1588 static RawUnresolvedClass* New(); |
| 1586 | 1589 |
| 1587 FINAL_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass, Object); | 1590 FINAL_HEAP_OBJECT_IMPLEMENTATION(UnresolvedClass, Object); |
| 1588 friend class Class; | 1591 friend class Class; |
| 1589 }; | 1592 }; |
| 1590 | 1593 |
| 1591 | 1594 |
| (...skipping 2291 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3883 bool IsCoreLibrary() const { | 3886 bool IsCoreLibrary() const { |
| 3884 return raw() == CoreLibrary(); | 3887 return raw() == CoreLibrary(); |
| 3885 } | 3888 } |
| 3886 | 3889 |
| 3887 inline intptr_t UrlHash() const; | 3890 inline intptr_t UrlHash() const; |
| 3888 | 3891 |
| 3889 static RawLibrary* LookupLibrary(Thread* thread, const String& url); | 3892 static RawLibrary* LookupLibrary(Thread* thread, const String& url); |
| 3890 static RawLibrary* GetLibrary(intptr_t index); | 3893 static RawLibrary* GetLibrary(intptr_t index); |
| 3891 | 3894 |
| 3892 static void InitCoreLibrary(Isolate* isolate); | 3895 static void InitCoreLibrary(Isolate* isolate); |
| 3893 static void InitNativeWrappersLibrary(Isolate* isolate); | 3896 static void InitNativeWrappersLibrary(Isolate* isolate, bool is_kernel_file); |
| 3894 | 3897 |
| 3895 static RawLibrary* AsyncLibrary(); | 3898 static RawLibrary* AsyncLibrary(); |
| 3896 static RawLibrary* ConvertLibrary(); | 3899 static RawLibrary* ConvertLibrary(); |
| 3897 static RawLibrary* CoreLibrary(); | 3900 static RawLibrary* CoreLibrary(); |
| 3898 static RawLibrary* CollectionLibrary(); | 3901 static RawLibrary* CollectionLibrary(); |
| 3899 static RawLibrary* DeveloperLibrary(); | 3902 static RawLibrary* DeveloperLibrary(); |
| 3900 static RawLibrary* InternalLibrary(); | 3903 static RawLibrary* InternalLibrary(); |
| 3901 static RawLibrary* IsolateLibrary(); | 3904 static RawLibrary* IsolateLibrary(); |
| 3902 static RawLibrary* MathLibrary(); | 3905 static RawLibrary* MathLibrary(); |
| 3903 static RawLibrary* MirrorsLibrary(); | 3906 static RawLibrary* MirrorsLibrary(); |
| (...skipping 5135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9039 | 9042 |
| 9040 inline void TypeArguments::SetHash(intptr_t value) const { | 9043 inline void TypeArguments::SetHash(intptr_t value) const { |
| 9041 // This is only safe because we create a new Smi, which does not cause | 9044 // This is only safe because we create a new Smi, which does not cause |
| 9042 // heap allocation. | 9045 // heap allocation. |
| 9043 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); | 9046 StoreSmi(&raw_ptr()->hash_, Smi::New(value)); |
| 9044 } | 9047 } |
| 9045 | 9048 |
| 9046 } // namespace dart | 9049 } // namespace dart |
| 9047 | 9050 |
| 9048 #endif // RUNTIME_VM_OBJECT_H_ | 9051 #endif // RUNTIME_VM_OBJECT_H_ |
| OLD | NEW |