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_RAW_OBJECT_H_ | 5 #ifndef VM_RAW_OBJECT_H_ |
6 #define VM_RAW_OBJECT_H_ | 6 #define VM_RAW_OBJECT_H_ |
7 | 7 |
8 #include "platform/assert.h" | 8 #include "platform/assert.h" |
9 #include "vm/globals.h" | 9 #include "vm/globals.h" |
10 #include "vm/token.h" | 10 #include "vm/token.h" |
(...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
432 | 432 |
433 intptr_t SizeFromClass() const; | 433 intptr_t SizeFromClass() const; |
434 | 434 |
435 intptr_t GetClassId() const { | 435 intptr_t GetClassId() const { |
436 uword tags = ptr()->tags_; | 436 uword tags = ptr()->tags_; |
437 return ClassIdTag::decode(tags); | 437 return ClassIdTag::decode(tags); |
438 } | 438 } |
439 | 439 |
440 friend class Api; | 440 friend class Api; |
441 friend class Array; | 441 friend class Array; |
| 442 friend class Code; |
442 friend class FreeListElement; | 443 friend class FreeListElement; |
443 friend class GCMarker; | 444 friend class GCMarker; |
444 friend class ExternalTypedData; | 445 friend class ExternalTypedData; |
445 friend class Heap; | 446 friend class Heap; |
446 friend class ClassStatsVisitor; | 447 friend class ClassStatsVisitor; |
447 friend class MarkingVisitor; | 448 friend class MarkingVisitor; |
448 friend class Object; | 449 friend class Object; |
449 friend class ObjectHistogram; | 450 friend class ObjectHistogram; |
450 friend class RawExternalTypedData; | 451 friend class RawExternalTypedData; |
451 friend class RawInstructions; | 452 friend class RawInstructions; |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
809 }; | 810 }; |
810 | 811 |
811 | 812 |
812 class RawCode : public RawObject { | 813 class RawCode : public RawObject { |
813 RAW_HEAP_OBJECT_IMPLEMENTATION(Code); | 814 RAW_HEAP_OBJECT_IMPLEMENTATION(Code); |
814 | 815 |
815 RawObject** from() { | 816 RawObject** from() { |
816 return reinterpret_cast<RawObject**>(&ptr()->instructions_); | 817 return reinterpret_cast<RawObject**>(&ptr()->instructions_); |
817 } | 818 } |
818 RawInstructions* instructions_; | 819 RawInstructions* instructions_; |
819 RawFunction* function_; | 820 // If owner_ is Function::null() the owner is a regular stub. |
| 821 // If owner_ is a Class the owner is the allocation stub for that class. |
| 822 // Else, owner_ is a regular Dart Function. |
| 823 RawObject* owner_; // Function, Null, or a Class. |
820 RawExceptionHandlers* exception_handlers_; | 824 RawExceptionHandlers* exception_handlers_; |
821 RawPcDescriptors* pc_descriptors_; | 825 RawPcDescriptors* pc_descriptors_; |
822 RawArray* deopt_info_array_; | 826 RawArray* deopt_info_array_; |
823 RawArray* object_table_; | 827 RawArray* object_table_; |
824 RawArray* static_calls_target_table_; // (code-offset, function, code). | 828 RawArray* static_calls_target_table_; // (code-offset, function, code). |
825 RawArray* stackmaps_; | 829 RawArray* stackmaps_; |
826 RawLocalVarDescriptors* var_descriptors_; | 830 RawLocalVarDescriptors* var_descriptors_; |
827 RawArray* comments_; | 831 RawArray* comments_; |
828 RawObject** to() { | 832 RawObject** to() { |
829 return reinterpret_cast<RawObject**>(&ptr()->comments_); | 833 return reinterpret_cast<RawObject**>(&ptr()->comments_); |
(...skipping 938 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1768 // Make sure this is updated when new TypedData types are added. | 1772 // Make sure this is updated when new TypedData types are added. |
1769 ASSERT(kTypedDataInt8ArrayViewCid == kTypedDataInt8ArrayCid + 14); | 1773 ASSERT(kTypedDataInt8ArrayViewCid == kTypedDataInt8ArrayCid + 14); |
1770 ASSERT(kExternalTypedDataInt8ArrayCid == kTypedDataInt8ArrayViewCid + 15); | 1774 ASSERT(kExternalTypedDataInt8ArrayCid == kTypedDataInt8ArrayViewCid + 15); |
1771 ASSERT(kNullCid == kExternalTypedDataInt8ArrayCid + 14); | 1775 ASSERT(kNullCid == kExternalTypedDataInt8ArrayCid + 14); |
1772 return (kNullCid - kTypedDataInt8ArrayCid); | 1776 return (kNullCid - kTypedDataInt8ArrayCid); |
1773 } | 1777 } |
1774 | 1778 |
1775 } // namespace dart | 1779 } // namespace dart |
1776 | 1780 |
1777 #endif // VM_RAW_OBJECT_H_ | 1781 #endif // VM_RAW_OBJECT_H_ |
OLD | NEW |