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

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

Issue 1584223006: Remove signature classes from the VM. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 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
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_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/atomic.h" 9 #include "vm/atomic.h"
10 #include "vm/globals.h" 10 #include "vm/globals.h"
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 V(SubtypeTestCache) \ 43 V(SubtypeTestCache) \
44 V(Error) \ 44 V(Error) \
45 V(ApiError) \ 45 V(ApiError) \
46 V(LanguageError) \ 46 V(LanguageError) \
47 V(UnhandledException) \ 47 V(UnhandledException) \
48 V(UnwindError) \ 48 V(UnwindError) \
49 V(Instance) \ 49 V(Instance) \
50 V(LibraryPrefix) \ 50 V(LibraryPrefix) \
51 V(AbstractType) \ 51 V(AbstractType) \
52 V(Type) \ 52 V(Type) \
53 V(FunctionType) \
53 V(TypeRef) \ 54 V(TypeRef) \
54 V(TypeParameter) \ 55 V(TypeParameter) \
55 V(BoundedType) \ 56 V(BoundedType) \
56 V(MixinAppType) \ 57 V(MixinAppType) \
58 V(Closure) \
57 V(Number) \ 59 V(Number) \
58 V(Integer) \ 60 V(Integer) \
59 V(Smi) \ 61 V(Smi) \
60 V(Mint) \ 62 V(Mint) \
61 V(Bigint) \ 63 V(Bigint) \
62 V(Double) \ 64 V(Double) \
63 V(Bool) \ 65 V(Bool) \
64 V(GrowableObjectArray) \ 66 V(GrowableObjectArray) \
65 V(Float32x4) \ 67 V(Float32x4) \
66 V(Int32x4) \ 68 V(Int32x4) \
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 #undef DEFINE_OBJECT_KIND 140 #undef DEFINE_OBJECT_KIND
139 141
140 #define DEFINE_OBJECT_KIND(clazz) \ 142 #define DEFINE_OBJECT_KIND(clazz) \
141 kTypedData##clazz##Cid, 143 kTypedData##clazz##Cid,
142 CLASS_LIST_TYPED_DATA(DEFINE_OBJECT_KIND) 144 CLASS_LIST_TYPED_DATA(DEFINE_OBJECT_KIND)
143 #undef DEFINE_OBJECT_KIND 145 #undef DEFINE_OBJECT_KIND
144 146
145 #define DEFINE_OBJECT_KIND(clazz) \ 147 #define DEFINE_OBJECT_KIND(clazz) \
146 kTypedData##clazz##ViewCid, 148 kTypedData##clazz##ViewCid,
147 CLASS_LIST_TYPED_DATA(DEFINE_OBJECT_KIND) 149 CLASS_LIST_TYPED_DATA(DEFINE_OBJECT_KIND)
150 #undef DEFINE_OBJECT_KIND
151
148 kByteDataViewCid, 152 kByteDataViewCid,
149 #undef DEFINE_OBJECT_KIND
150 153
151 #define DEFINE_OBJECT_KIND(clazz) \ 154 #define DEFINE_OBJECT_KIND(clazz) \
152 kExternalTypedData##clazz##Cid, 155 kExternalTypedData##clazz##Cid,
153 CLASS_LIST_TYPED_DATA(DEFINE_OBJECT_KIND) 156 CLASS_LIST_TYPED_DATA(DEFINE_OBJECT_KIND)
154 #undef DEFINE_OBJECT_KIND 157 #undef DEFINE_OBJECT_KIND
155 158
156 kByteBufferCid, 159 kByteBufferCid,
157 160
158 // The following entries do not describe a predefined class, but instead 161 // The following entries do not describe a predefined class, but instead
159 // are class indexes for pre-allocated instance (Null, dynamic and Void). 162 // are class indexes for pre-allocated instance (Null, dynamic and Void).
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 #if defined(DEBUG) 586 #if defined(DEBUG)
584 static void ValidateOverwrittenPointer(RawObject* raw); 587 static void ValidateOverwrittenPointer(RawObject* raw);
585 static void ValidateOverwrittenSmi(RawSmi* raw); 588 static void ValidateOverwrittenSmi(RawSmi* raw);
586 #endif // DEBUG 589 #endif // DEBUG
587 590
588 friend class Api; 591 friend class Api;
589 friend class ApiMessageReader; // GetClassId 592 friend class ApiMessageReader; // GetClassId
590 friend class Array; 593 friend class Array;
591 friend class Bigint; 594 friend class Bigint;
592 friend class ByteBuffer; 595 friend class ByteBuffer;
596 friend class Closure;
593 friend class Code; 597 friend class Code;
594 friend class Closure;
595 friend class Double; 598 friend class Double;
596 friend class FreeListElement; 599 friend class FreeListElement;
597 friend class Function; 600 friend class Function;
598 friend class GCMarker; 601 friend class GCMarker;
599 friend class ExternalTypedData; 602 friend class ExternalTypedData;
600 friend class ForwardList; 603 friend class ForwardList;
601 friend class GrowableObjectArray; // StorePointer 604 friend class GrowableObjectArray; // StorePointer
602 friend class Heap; 605 friend class Heap;
603 friend class HeapMapAsJSONVisitor; 606 friend class HeapMapAsJSONVisitor;
604 friend class ClassStatsVisitor; 607 friend class ClassStatsVisitor;
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
652 RawArray* functions_hash_table_; 655 RawArray* functions_hash_table_;
653 RawArray* fields_; 656 RawArray* fields_;
654 RawArray* offset_in_words_to_field_; 657 RawArray* offset_in_words_to_field_;
655 RawArray* interfaces_; // Array of AbstractType. 658 RawArray* interfaces_; // Array of AbstractType.
656 RawGrowableObjectArray* direct_subclasses_; // Array of Class. 659 RawGrowableObjectArray* direct_subclasses_; // Array of Class.
657 RawScript* script_; 660 RawScript* script_;
658 RawLibrary* library_; 661 RawLibrary* library_;
659 RawTypeArguments* type_parameters_; // Array of TypeParameter. 662 RawTypeArguments* type_parameters_; // Array of TypeParameter.
660 RawAbstractType* super_type_; 663 RawAbstractType* super_type_;
661 RawType* mixin_; // Generic mixin type, e.g. M<T>, not M<int>. 664 RawType* mixin_; // Generic mixin type, e.g. M<T>, not M<int>.
662 RawFunction* signature_function_; // Associated function for signature class. 665 RawFunction* signature_function_; // Associated function for typedef class.
663 RawArray* constants_; // Canonicalized values of this class. 666 RawArray* constants_; // Canonicalized values of this class.
664 RawObject* canonical_types_; // An array of canonicalized types of this class 667 RawObject* canonical_types_; // An array of canonicalized types of this class
665 // or the canonical type. 668 // or the canonical type.
666 RawArray* invocation_dispatcher_cache_; // Cache for dispatcher functions. 669 RawArray* invocation_dispatcher_cache_; // Cache for dispatcher functions.
667 RawArray* cha_codes_; // CHA optimized codes. 670 RawArray* cha_codes_; // CHA optimized codes.
668 RawCode* allocation_stub_; // Stub code for allocation of instances. 671 RawCode* allocation_stub_; // Stub code for allocation of instances.
669 RawObject** to() { 672 RawObject** to() {
670 return reinterpret_cast<RawObject**>(&ptr()->allocation_stub_); 673 return reinterpret_cast<RawObject**>(&ptr()->allocation_stub_);
671 } 674 }
672 675
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 826
824 class RawClosureData : public RawObject { 827 class RawClosureData : public RawObject {
825 private: 828 private:
826 RAW_HEAP_OBJECT_IMPLEMENTATION(ClosureData); 829 RAW_HEAP_OBJECT_IMPLEMENTATION(ClosureData);
827 830
828 RawObject** from() { 831 RawObject** from() {
829 return reinterpret_cast<RawObject**>(&ptr()->context_scope_); 832 return reinterpret_cast<RawObject**>(&ptr()->context_scope_);
830 } 833 }
831 RawContextScope* context_scope_; 834 RawContextScope* context_scope_;
832 RawFunction* parent_function_; // Enclosing function of this local function. 835 RawFunction* parent_function_; // Enclosing function of this local function.
833 RawClass* signature_class_; 836 RawFunctionType* signature_type_;
834 RawInstance* closure_; // Closure object for static implicit closures. 837 RawInstance* closure_; // Closure object for static implicit closures.
835 RawObject** to() { 838 RawObject** to() {
836 return reinterpret_cast<RawObject**>(&ptr()->closure_); 839 return reinterpret_cast<RawObject**>(&ptr()->closure_);
837 } 840 }
838 841
839 friend class Function; 842 friend class Function;
840 }; 843 };
841 844
842 845
843 class RawRedirectionData : public RawObject { 846 class RawRedirectionData : public RawObject {
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
1555 RawTypeArguments* arguments_; 1558 RawTypeArguments* arguments_;
1556 RawLanguageError* error_; // Error object if type is malformed or malbounded. 1559 RawLanguageError* error_; // Error object if type is malformed or malbounded.
1557 RawObject** to() { 1560 RawObject** to() {
1558 return reinterpret_cast<RawObject**>(&ptr()->error_); 1561 return reinterpret_cast<RawObject**>(&ptr()->error_);
1559 } 1562 }
1560 int32_t token_pos_; 1563 int32_t token_pos_;
1561 int8_t type_state_; 1564 int8_t type_state_;
1562 }; 1565 };
1563 1566
1564 1567
1568 class RawFunctionType : public RawAbstractType {
1569 private:
1570 RAW_HEAP_OBJECT_IMPLEMENTATION(FunctionType);
1571
1572 RawObject** from() {
1573 return reinterpret_cast<RawObject**>(&ptr()->scope_class_);
1574 }
1575 RawClass* scope_class_;
1576 RawTypeArguments* arguments_;
1577 RawFunction* signature_;
1578 RawLanguageError* error_; // Error object if type is malformed or malbounded.
1579 RawObject** to() {
1580 return reinterpret_cast<RawObject**>(&ptr()->error_);
1581 }
1582 int32_t token_pos_;
1583 int8_t type_state_;
1584 };
1585
1586
1565 class RawTypeRef : public RawAbstractType { 1587 class RawTypeRef : public RawAbstractType {
1566 private: 1588 private:
1567 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeRef); 1589 RAW_HEAP_OBJECT_IMPLEMENTATION(TypeRef);
1568 1590
1569 RawObject** from() { 1591 RawObject** from() {
1570 return reinterpret_cast<RawObject**>(&ptr()->type_); 1592 return reinterpret_cast<RawObject**>(&ptr()->type_);
1571 } 1593 }
1572 RawAbstractType* type_; // The referenced type. 1594 RawAbstractType* type_; // The referenced type.
1573 RawObject** to() { 1595 RawObject** to() {
1574 return reinterpret_cast<RawObject**>(&ptr()->type_); 1596 return reinterpret_cast<RawObject**>(&ptr()->type_);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1617 return reinterpret_cast<RawObject**>(&ptr()->super_type_); 1639 return reinterpret_cast<RawObject**>(&ptr()->super_type_);
1618 } 1640 }
1619 RawAbstractType* super_type_; 1641 RawAbstractType* super_type_;
1620 RawArray* mixin_types_; // Array of AbstractType. 1642 RawArray* mixin_types_; // Array of AbstractType.
1621 RawObject** to() { 1643 RawObject** to() {
1622 return reinterpret_cast<RawObject**>(&ptr()->mixin_types_); 1644 return reinterpret_cast<RawObject**>(&ptr()->mixin_types_);
1623 } 1645 }
1624 }; 1646 };
1625 1647
1626 1648
1649 class RawClosure : public RawInstance {
1650 private:
1651 RAW_HEAP_OBJECT_IMPLEMENTATION(Closure);
1652
1653 RawObject** from() {
1654 return reinterpret_cast<RawObject**>(&ptr()->type_arguments_);
1655 }
1656
1657 RawTypeArguments* type_arguments_;
1658 RawFunction* function_;
1659 RawContext* context_;
1660
1661 RawObject** to() {
1662 return reinterpret_cast<RawObject**>(&ptr()->context_);
1663 }
1664 };
1665
1666
1627 class RawNumber : public RawInstance { 1667 class RawNumber : public RawInstance {
1628 RAW_OBJECT_IMPLEMENTATION(Number); 1668 RAW_OBJECT_IMPLEMENTATION(Number);
1629 }; 1669 };
1630 1670
1631 1671
1632 class RawInteger : public RawNumber { 1672 class RawInteger : public RawNumber {
1633 RAW_OBJECT_IMPLEMENTATION(Integer); 1673 RAW_OBJECT_IMPLEMENTATION(Integer);
1634 }; 1674 };
1635 1675
1636 1676
(...skipping 632 matching lines...) Expand 10 before | Expand all | Expand 10 after
2269 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid == 2309 COMPILE_ASSERT(kExternalTypedDataInt8ArrayCid ==
2270 kTypedDataInt8ArrayViewCid + 15); 2310 kTypedDataInt8ArrayViewCid + 15);
2271 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14); 2311 COMPILE_ASSERT(kByteBufferCid == kExternalTypedDataInt8ArrayCid + 14);
2272 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1); 2312 COMPILE_ASSERT(kNullCid == kByteBufferCid + 1);
2273 return (kNullCid - kTypedDataInt8ArrayCid); 2313 return (kNullCid - kTypedDataInt8ArrayCid);
2274 } 2314 }
2275 2315
2276 } // namespace dart 2316 } // namespace dart
2277 2317
2278 #endif // VM_RAW_OBJECT_H_ 2318 #endif // VM_RAW_OBJECT_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698