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

Unified Diff: runtime/vm/snapshot.cc

Issue 510613002: Add passive handle types PassiveObject and PassiveInstance to allow (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/snapshot.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/snapshot.cc
===================================================================
--- runtime/vm/snapshot.cc (revision 39567)
+++ runtime/vm/snapshot.cc (working copy)
@@ -169,6 +169,7 @@
old_space_(isolate->heap()->old_space()),
cls_(Class::Handle(isolate)),
obj_(Object::Handle(isolate)),
+ pobj_(PassiveObject::Handle(isolate)),
array_(Array::Handle(isolate)),
field_(Field::Handle(isolate)),
str_(String::Handle(isolate)),
@@ -336,7 +337,7 @@
switch (class_id) {
#define SNAPSHOT_READ(clazz) \
case clazz::kClassId: { \
- obj_ = clazz::ReadFrom(this, object_id, tags, kind_); \
+ pobj_ = clazz::ReadFrom(this, object_id, tags, kind_); \
break; \
}
CLASS_LIST_NO_OBJECT(SNAPSHOT_READ)
@@ -346,7 +347,7 @@
CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) {
tags = RawObject::ClassIdTag::update(class_id, tags);
- obj_ = TypedData::ReadFrom(this, object_id, tags, kind_);
+ pobj_ = TypedData::ReadFrom(this, object_id, tags, kind_);
break;
}
#undef SNAPSHOT_READ
@@ -355,7 +356,7 @@
CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) {
tags = RawObject::ClassIdTag::update(class_id, tags);
- obj_ = ExternalTypedData::ReadFrom(this, object_id, tags, kind_);
+ pobj_ = ExternalTypedData::ReadFrom(this, object_id, tags, kind_);
break;
}
#undef SNAPSHOT_READ
@@ -362,9 +363,9 @@
default: UNREACHABLE(); break;
}
if (kind_ == Snapshot::kFull) {
- obj_.SetCreatedFromSnapshot();
+ pobj_.SetCreatedFromSnapshot();
}
- return obj_.raw();
+ return pobj_.raw();
}
@@ -888,8 +889,8 @@
intptr_t offset = Instance::NextFieldOffset();
intptr_t result_cid = result->GetClassId();
while (offset < next_field_offset) {
- obj_ = ReadObjectRef();
- result->SetFieldAtOffset(offset, obj_);
+ pobj_ = ReadObjectRef();
+ result->SetFieldAtOffset(offset, pobj_);
if ((offset != type_argument_field_offset) &&
(kind_ == Snapshot::kMessage)) {
// TODO(fschneider): Consider hoisting these lookups out of the loop.
@@ -900,6 +901,7 @@
field_ ^= array_.At(offset >> kWordSizeLog2);
ASSERT(!field_.IsNull());
ASSERT(field_.Offset() == offset);
+ obj_ = pobj_.raw();
field_.RecordStore(obj_);
}
// TODO(fschneider): Verify the guarded cid and length for other kinds of
@@ -926,7 +928,7 @@
switch (cls_.id()) {
#define SNAPSHOT_READ(clazz) \
case clazz::kClassId: { \
- obj_ = clazz::ReadFrom(this, object_id, tags, kind_); \
+ pobj_ = clazz::ReadFrom(this, object_id, tags, kind_); \
break; \
}
CLASS_LIST_NO_OBJECT(SNAPSHOT_READ)
@@ -936,7 +938,7 @@
CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) {
tags = RawObject::ClassIdTag::update(cls_.id(), tags);
- obj_ = TypedData::ReadFrom(this, object_id, tags, kind_);
+ pobj_ = TypedData::ReadFrom(this, object_id, tags, kind_);
break;
}
#undef SNAPSHOT_READ
@@ -945,7 +947,7 @@
CLASS_LIST_TYPED_DATA(SNAPSHOT_READ) {
tags = RawObject::ClassIdTag::update(cls_.id(), tags);
- obj_ = ExternalTypedData::ReadFrom(this, object_id, tags, kind_);
+ pobj_ = ExternalTypedData::ReadFrom(this, object_id, tags, kind_);
break;
}
#undef SNAPSHOT_READ
@@ -952,9 +954,9 @@
default: UNREACHABLE(); break;
}
if (kind_ == Snapshot::kFull) {
- obj_.SetCreatedFromSnapshot();
+ pobj_.SetCreatedFromSnapshot();
}
- return obj_.raw();
+ return pobj_.raw();
}
@@ -969,8 +971,8 @@
result.SetTypeArguments(*TypeArgumentsHandle());
for (intptr_t i = 0; i < len; i++) {
- *ObjectHandle() = ReadObjectRef();
- result.SetAt(i, *ObjectHandle());
+ *PassiveObjectHandle() = ReadObjectRef();
+ result.SetAt(i, *PassiveObjectHandle());
}
}
« no previous file with comments | « runtime/vm/snapshot.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698