Index: runtime/vm/snapshot.cc |
=================================================================== |
--- runtime/vm/snapshot.cc (revision 41257) |
+++ runtime/vm/snapshot.cc (working copy) |
@@ -304,12 +304,10 @@ |
return result.raw(); |
} |
ASSERT((class_header & kSmiTagMask) != kSmiTag); |
- cls_ = LookupInternalClass(class_header); |
- ASSERT(!cls_.IsNull()); |
// Similarly Array and ImmutableArray objects are also similarly only |
// allocated here, the individual array elements are read later. |
- intptr_t class_id = cls_.id(); |
+ intptr_t class_id = LookupInternalClass(class_header); |
if (class_id == kArrayCid) { |
// Read the length and allocate an object based on the len. |
intptr_t len = ReadSmiValue(); |
@@ -806,21 +804,18 @@ |
} |
-RawClass* SnapshotReader::LookupInternalClass(intptr_t class_header) { |
+intptr_t SnapshotReader::LookupInternalClass(intptr_t class_header) { |
// If the header is an object Id, lookup singleton VM classes or classes |
// stored in the object store. |
if (IsVMIsolateObject(class_header)) { |
intptr_t class_id = GetVMIsolateObjectId(class_header); |
- if (IsSingletonClassId(class_id)) { |
- return isolate()->class_table()->At(class_id); // get singleton class. |
- } |
- } else if (SerializedHeaderTag::decode(class_header) == kObjectId) { |
- intptr_t class_id = SerializedHeaderData::decode(class_header); |
- if (IsObjectStoreClassId(class_id)) { |
- return isolate()->class_table()->At(class_id); // get singleton class. |
- } |
+ ASSERT(IsSingletonClassId(class_id)); |
+ return class_id; |
} |
- return Class::null(); |
+ ASSERT(SerializedHeaderTag::decode(class_header) == kObjectId); |
+ intptr_t class_id = SerializedHeaderData::decode(class_header); |
+ ASSERT(IsObjectStoreClassId(class_id)); |
+ return class_id; |
} |
@@ -991,9 +986,8 @@ |
return result->raw(); |
} |
ASSERT((class_header & kSmiTagMask) != kSmiTag); |
- cls_ = LookupInternalClass(class_header); |
- ASSERT(!cls_.IsNull()); |
- switch (cls_.id()) { |
+ intptr_t class_id = LookupInternalClass(class_header); |
+ switch (class_id) { |
#define SNAPSHOT_READ(clazz) \ |
case clazz::kClassId: { \ |
pobj_ = clazz::ReadFrom(this, object_id, tags, kind_); \ |
@@ -1005,7 +999,7 @@ |
case kTypedData##clazz##Cid: \ |
CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) { |
- tags = RawObject::ClassIdTag::update(cls_.id(), tags); |
+ tags = RawObject::ClassIdTag::update(class_id, tags); |
pobj_ = TypedData::ReadFrom(this, object_id, tags, kind_); |
break; |
} |
@@ -1014,7 +1008,7 @@ |
case kExternalTypedData##clazz##Cid: \ |
CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) { |
- tags = RawObject::ClassIdTag::update(cls_.id(), tags); |
+ tags = RawObject::ClassIdTag::update(class_id, tags); |
pobj_ = ExternalTypedData::ReadFrom(this, object_id, tags, kind_); |
break; |
} |