| 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
|
|
|