Index: vm/raw_object.h |
=================================================================== |
--- vm/raw_object.h (revision 10409) |
+++ vm/raw_object.h (working copy) |
@@ -86,9 +86,9 @@ |
V(ExternalUint64Array) \ |
V(ExternalFloat32Array) \ |
V(ExternalFloat64Array) \ |
- V(Closure) \ |
V(Stacktrace) \ |
V(JSRegExp) \ |
+ V(Closure) \ |
#define CLASS_LIST(V) \ |
V(Object) \ |
@@ -103,22 +103,27 @@ |
#undef DEFINE_FORWARD_DECLARATION |
-enum ObjectKind { |
- kIllegalObjectKind = 0, |
+enum ClassId { |
+ // Illegal class id. |
+ kIllegalCid = 0, |
+ |
+ // List of Ids for predefined classes. |
#define DEFINE_OBJECT_KIND(clazz) \ |
- k##clazz, |
+ k##clazz##Cid, |
CLASS_LIST(DEFINE_OBJECT_KIND) |
#undef DEFINE_OBJECT_KIND |
- // The following entry does not describe a real object, but instead it |
- // identifies free list elements in the heap. |
+ |
+ // The following entries do not describe a predefined class, but instead |
+ // are class indexes for pre-allocated instance (Null, Dynamic and Void). |
+ kNullCid, |
+ kDynamicCid, |
+ kVoidCid, |
+ |
+ // The following entry does not describe a real class, but instead it is an |
+ // id which is used to identify free list elements in the heap. |
kFreeListElement, |
- // The following entries do not describe a real object, but instead are used |
- // to allocate class indexes for pre-allocated instance classes such as the |
- // Null, Void, Dynamic and other similar classes. |
- kNullClassId, |
- kDynamicClassId, |
- kVoidClassId, |
- kNumPredefinedKinds = 100 |
+ |
+ kNumPredefinedCids, |
}; |
enum ObjectAlignment { |
@@ -306,7 +311,7 @@ |
return CanonicalObjectTag::decode(value); |
} |
- // ObjectKind predicates. |
+ // Class Id predicates. |
static bool IsErrorClassId(intptr_t index); |
static bool IsNumberClassId(intptr_t index); |
static bool IsIntegerClassId(intptr_t index); |
@@ -346,8 +351,6 @@ |
return ClassIdTag::decode(tags); |
} |
- ObjectKind GetObjectKind() const; |
- |
friend class Api; |
friend class Array; |
friend class FreeListElement; |
@@ -399,7 +402,6 @@ |
cpp_vtable handle_vtable_; |
intptr_t instance_size_; // Size if fixed length or 0 if variable length. |
- ObjectKind instance_kind_; |
intptr_t id_; // Class Id, also index in the class table. |
intptr_t type_arguments_instance_field_offset_; // May be kNoTypeArguments. |
intptr_t next_field_offset_; // Offset of the next instance field. |
@@ -1492,124 +1494,124 @@ |
uint8_t data_[0]; |
}; |
-// ObjectKind predicates. |
+// Class Id predicates. |
inline bool RawObject::IsErrorClassId(intptr_t index) { |
// Make sure this function is updated when new Error types are added. |
- ASSERT(kApiError == kError + 1 && |
- kLanguageError == kError + 2 && |
- kUnhandledException == kError + 3 && |
- kUnwindError == kError + 4 && |
- kInstance == kError + 5); |
- return (index >= kError && index < kInstance); |
+ ASSERT(kApiErrorCid == kErrorCid + 1 && |
+ kLanguageErrorCid == kErrorCid + 2 && |
+ kUnhandledExceptionCid == kErrorCid + 3 && |
+ kUnwindErrorCid == kErrorCid + 4 && |
+ kInstanceCid == kErrorCid + 5); |
+ return (index >= kErrorCid && index < kInstanceCid); |
} |
inline bool RawObject::IsNumberClassId(intptr_t index) { |
// Make sure this function is updated when new Number types are added. |
- ASSERT(kInteger == kNumber + 1 && |
- kSmi == kNumber + 2 && |
- kMint == kNumber + 3 && |
- kBigint == kNumber + 4 && |
- kDouble == kNumber + 5 && |
- kString == kNumber + 6); |
- return (index >= kNumber && index < kString); |
+ ASSERT(kIntegerCid == kNumberCid + 1 && |
+ kSmiCid == kNumberCid + 2 && |
+ kMintCid == kNumberCid + 3 && |
+ kBigintCid == kNumberCid + 4 && |
+ kDoubleCid == kNumberCid + 5 && |
+ kStringCid == kNumberCid + 6); |
+ return (index >= kNumberCid && index < kStringCid); |
} |
inline bool RawObject::IsIntegerClassId(intptr_t index) { |
// Make sure this function is updated when new Integer types are added. |
- ASSERT(kSmi == kInteger + 1 && |
- kMint == kInteger + 2 && |
- kBigint == kInteger + 3 && |
- kDouble == kInteger + 4); |
- return (index >= kInteger && index < kDouble); |
+ ASSERT(kSmiCid == kIntegerCid + 1 && |
+ kMintCid == kIntegerCid + 2 && |
+ kBigintCid == kIntegerCid + 3 && |
+ kDoubleCid == kIntegerCid + 4); |
+ return (index >= kIntegerCid && index < kDoubleCid); |
} |
inline bool RawObject::IsStringClassId(intptr_t index) { |
- // Make sure this function is updated when new String types are added. |
- ASSERT(kOneByteString == kString + 1 && |
- kTwoByteString == kString + 2 && |
- kFourByteString == kString + 3 && |
- kExternalOneByteString == kString + 4 && |
- kExternalTwoByteString == kString + 5 && |
- kExternalFourByteString == kString + 6 && |
- kBool == kString + 7); |
- return (index >= kString && index < kBool); |
+ // Make sure this function is updated when new StringCid types are added. |
+ ASSERT(kOneByteStringCid == kStringCid + 1 && |
+ kTwoByteStringCid == kStringCid + 2 && |
+ kFourByteStringCid == kStringCid + 3 && |
+ kExternalOneByteStringCid == kStringCid + 4 && |
+ kExternalTwoByteStringCid == kStringCid + 5 && |
+ kExternalFourByteStringCid == kStringCid + 6 && |
+ kBoolCid == kStringCid + 7); |
+ return (index >= kStringCid && index < kBoolCid); |
} |
inline bool RawObject::IsOneByteStringClassId(intptr_t index) { |
- // Make sure this function is updated when new String types are added. |
- ASSERT(kOneByteString == kString + 1 && |
- kTwoByteString == kString + 2 && |
- kFourByteString == kString + 3 && |
- kExternalOneByteString == kString + 4 && |
- kExternalTwoByteString == kString + 5 && |
- kExternalFourByteString == kString + 6 && |
- kBool == kString + 7); |
- return (index == kOneByteString || |
- index == kExternalOneByteString); |
+ // Make sure this function is updated when new StringCid types are added. |
+ ASSERT(kOneByteStringCid == kStringCid + 1 && |
+ kTwoByteStringCid == kStringCid + 2 && |
+ kFourByteStringCid == kStringCid + 3 && |
+ kExternalOneByteStringCid == kStringCid + 4 && |
+ kExternalTwoByteStringCid == kStringCid + 5 && |
+ kExternalFourByteStringCid == kStringCid + 6 && |
+ kBoolCid == kStringCid + 7); |
+ return (index == kOneByteStringCid || index == kExternalOneByteStringCid); |
} |
inline bool RawObject::IsTwoByteStringClassId(intptr_t index) { |
- // Make sure this function is updated when new String types are added. |
- ASSERT(kOneByteString == kString + 1 && |
- kTwoByteString == kString + 2 && |
- kFourByteString == kString + 3 && |
- kExternalOneByteString == kString + 4 && |
- kExternalTwoByteString == kString + 5 && |
- kExternalFourByteString == kString + 6 && |
- kBool == kString + 7); |
- return (index == kOneByteString || |
- index == kTwoByteString || |
- index == kExternalOneByteString || |
- index == kExternalTwoByteString); |
+ // Make sure this function is updated when new StringCid types are added. |
+ ASSERT(kOneByteStringCid == kStringCid + 1 && |
+ kTwoByteStringCid == kStringCid + 2 && |
+ kFourByteStringCid == kStringCid + 3 && |
+ kExternalOneByteStringCid == kStringCid + 4 && |
+ kExternalTwoByteStringCid == kStringCid + 5 && |
+ kExternalFourByteStringCid == kStringCid + 6 && |
+ kBoolCid == kStringCid + 7); |
+ return (index == kOneByteStringCid || |
+ index == kTwoByteStringCid || |
+ index == kExternalOneByteStringCid || |
+ index == kExternalTwoByteStringCid); |
} |
inline bool RawObject::IsExternalStringClassId(intptr_t index) { |
- // Make sure this function is updated when new String types are added. |
- ASSERT(kOneByteString == kString + 1 && |
- kTwoByteString == kString + 2 && |
- kFourByteString == kString + 3 && |
- kExternalOneByteString == kString + 4 && |
- kExternalTwoByteString == kString + 5 && |
- kExternalFourByteString == kString + 6 && |
- kBool == kString + 7); |
- return (index == kExternalOneByteString || |
- index == kExternalTwoByteString || |
- index == kExternalFourByteString); |
+ // Make sure this function is updated when new StringCid types are added. |
+ ASSERT(kOneByteStringCid == kStringCid + 1 && |
+ kTwoByteStringCid == kStringCid + 2 && |
+ kFourByteStringCid == kStringCid + 3 && |
+ kExternalOneByteStringCid == kStringCid + 4 && |
+ kExternalTwoByteStringCid == kStringCid + 5 && |
+ kExternalFourByteStringCid == kStringCid + 6 && |
+ kBoolCid == kStringCid + 7); |
+ return (index == kExternalOneByteStringCid || |
+ index == kExternalTwoByteStringCid || |
+ index == kExternalFourByteStringCid); |
} |
inline bool RawObject::IsBuiltinListClassId(intptr_t index) { |
// Make sure this function is updated when new builtin List types are added. |
- ASSERT(kImmutableArray == kArray + 1 && |
- kGrowableObjectArray == kArray + 2 && |
- kByteArray == kArray + 3); |
- return (index >= kArray && index < kByteArray) || IsByteArrayClassId(index); |
+ ASSERT(kImmutableArrayCid == kArrayCid + 1 && |
+ kGrowableObjectArrayCid == kArrayCid + 2 && |
+ kByteArrayCid == kArrayCid + 3); |
+ return (index >= kArrayCid && index < kByteArrayCid) || |
+ IsByteArrayClassId(index); |
} |
inline bool RawObject::IsByteArrayClassId(intptr_t index) { |
// Make sure this function is updated when new ByteArray types are added. |
- ASSERT(kInt8Array == kByteArray + 1 && |
- kUint8Array == kByteArray + 2 && |
- kInt16Array == kByteArray + 3 && |
- kUint16Array == kByteArray + 4 && |
- kInt32Array == kByteArray + 5 && |
- kUint32Array == kByteArray + 6 && |
- kInt64Array == kByteArray + 7 && |
- kUint64Array == kByteArray + 8 && |
- kFloat32Array == kByteArray + 9 && |
- kFloat64Array == kByteArray + 10 && |
- kExternalInt8Array == kByteArray + 11 && |
- kExternalUint8Array == kByteArray + 12 && |
- kExternalInt16Array == kByteArray + 13 && |
- kExternalUint16Array == kByteArray + 14 && |
- kExternalInt32Array == kByteArray + 15 && |
- kExternalUint32Array == kByteArray + 16 && |
- kExternalInt64Array == kByteArray + 17 && |
- kExternalUint64Array == kByteArray + 18 && |
- kExternalFloat32Array == kByteArray + 19 && |
- kExternalFloat64Array == kByteArray + 20 && |
- kClosure == kByteArray + 21); |
- return (index >= kByteArray && index <= kClosure); |
+ ASSERT(kInt8ArrayCid == kByteArrayCid + 1 && |
+ kUint8ArrayCid == kByteArrayCid + 2 && |
+ kInt16ArrayCid == kByteArrayCid + 3 && |
+ kUint16ArrayCid == kByteArrayCid + 4 && |
+ kInt32ArrayCid == kByteArrayCid + 5 && |
+ kUint32ArrayCid == kByteArrayCid + 6 && |
+ kInt64ArrayCid == kByteArrayCid + 7 && |
+ kUint64ArrayCid == kByteArrayCid + 8 && |
+ kFloat32ArrayCid == kByteArrayCid + 9 && |
+ kFloat64ArrayCid == kByteArrayCid + 10 && |
+ kExternalInt8ArrayCid == kByteArrayCid + 11 && |
+ kExternalUint8ArrayCid == kByteArrayCid + 12 && |
+ kExternalInt16ArrayCid == kByteArrayCid + 13 && |
+ kExternalUint16ArrayCid == kByteArrayCid + 14 && |
+ kExternalInt32ArrayCid == kByteArrayCid + 15 && |
+ kExternalUint32ArrayCid == kByteArrayCid + 16 && |
+ kExternalInt64ArrayCid == kByteArrayCid + 17 && |
+ kExternalUint64ArrayCid == kByteArrayCid + 18 && |
+ kExternalFloat32ArrayCid == kByteArrayCid + 19 && |
+ kExternalFloat64ArrayCid == kByteArrayCid + 20 && |
+ kStacktraceCid == kByteArrayCid + 21); |
+ return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid); |
} |
} // namespace dart |