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

Unified Diff: runtime/vm/raw_object_snapshot.cc

Issue 10867046: Use Heap::kOld when allocating objects for script snapshots. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 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/object.h ('k') | runtime/vm/snapshot.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/raw_object_snapshot.cc
===================================================================
--- runtime/vm/raw_object_snapshot.cc (revision 11394)
+++ runtime/vm/raw_object_snapshot.cc (working copy)
@@ -17,7 +17,11 @@
#define NEW_OBJECT_WITH_LEN(type, len) \
((kind == Snapshot::kFull) ? reader->New##type(len) : type::New(len))
+#define NEW_OBJECT_WITH_LEN_SPACE(type, len, kind) \
+ ((kind == Snapshot::kFull) ? \
+ reader->New##type(len) : type::New(len, HEAP_SPACE(kind)))
+
static uword BigintAllocator(intptr_t size) {
Zone* zone = Isolate::Current()->current_zone();
return zone->AllocUnsafe(size);
@@ -317,7 +321,7 @@
intptr_t len = reader->ReadSmiValue();
TypeArguments& type_arguments = TypeArguments::ZoneHandle(
- reader->isolate(), NEW_OBJECT_WITH_LEN(TypeArguments, len));
+ reader->isolate(), NEW_OBJECT_WITH_LEN_SPACE(TypeArguments, len, kind));
reader->AddBackRef(object_id, &type_arguments, kIsDeserialized);
// Now set all the object fields.
@@ -1012,7 +1016,7 @@
if (kind == Snapshot::kFull) {
context = reader->NewContext(num_vars);
} else {
- context = Context::New(num_vars);
+ context = Context::New(num_vars, HEAP_SPACE(kind));
}
reader->AddBackRef(object_id, &context, kIsDeserialized);
@@ -1309,7 +1313,7 @@
if (RawObject::IsCanonical(tags)) {
mint = Mint::NewCanonical(value);
} else {
- mint = Mint::New(value, Heap::kNew);
+ mint = Mint::New(value, HEAP_SPACE(kind));
}
}
reader->AddBackRef(object_id, &mint, kIsDeserialized);
@@ -1353,8 +1357,8 @@
// Create a Bigint object from HexCString.
Bigint& obj = Bigint::ZoneHandle(
reader->isolate(),
- (kind == Snapshot::kFull) ? reader->NewBigint(str) :
- BigintOperations::FromHexCString(str));
+ ((kind == Snapshot::kFull) ? reader->NewBigint(str) :
+ BigintOperations::FromHexCString(str, HEAP_SPACE(kind))));
// If it is a canonical constant make it one.
if ((kind != Snapshot::kFull) && RawObject::IsCanonical(tags)) {
@@ -1427,7 +1431,7 @@
if (RawObject::IsCanonical(tags)) {
dbl = Double::NewCanonical(value);
} else {
- dbl = Double::New(value, Heap::kNew);
+ dbl = Double::New(value, HEAP_SPACE(kind));
}
}
reader->AddBackRef(object_id, &dbl, kIsDeserialized);
@@ -1476,7 +1480,8 @@
void String::ReadFromImpl(SnapshotReader* reader,
HandleType* str_obj,
intptr_t len,
- intptr_t tags) {
+ intptr_t tags,
+ Snapshot::Kind kind) {
ASSERT(reader != NULL);
if (RawObject::IsCanonical(tags)) {
// Set up canonical string object.
@@ -1489,7 +1494,7 @@
*str_obj ^= Symbols::New(ptr, len);
} else {
// Set up the string object.
- *str_obj = HandleType::New(len, Heap::kNew);
+ *str_obj = HandleType::New(len, HEAP_SPACE(kind));
str_obj->set_tags(tags);
str_obj->SetHash(0); // Will get computed when needed.
for (intptr_t i = 0; i < len; i++) {
@@ -1522,7 +1527,7 @@
}
ASSERT((hash == 0) || (String::Hash(str_obj, 0, str_obj.Length()) == hash));
} else {
- ReadFromImpl<OneByteString, uint8_t>(reader, &str_obj, len, tags);
+ ReadFromImpl<OneByteString, uint8_t>(reader, &str_obj, len, tags, kind);
}
reader->AddBackRef(object_id, &str_obj, kIsDeserialized);
return str_obj.raw();
@@ -1553,7 +1558,7 @@
}
ASSERT(String::Hash(str_obj, 0, str_obj.Length()) == hash);
} else {
- ReadFromImpl<TwoByteString, uint16_t>(reader, &str_obj, len, tags);
+ ReadFromImpl<TwoByteString, uint16_t>(reader, &str_obj, len, tags, kind);
}
reader->AddBackRef(object_id, &str_obj, kIsDeserialized);
return str_obj.raw();
@@ -1584,7 +1589,7 @@
}
ASSERT(String::Hash(str_obj, 0, str_obj.Length()) == hash);
} else {
- ReadFromImpl<FourByteString, uint32_t>(reader, &str_obj, len, tags);
+ ReadFromImpl<FourByteString, uint32_t>(reader, &str_obj, len, tags, kind);
}
reader->AddBackRef(object_id, &str_obj, kIsDeserialized);
return str_obj.raw();
@@ -1774,7 +1779,7 @@
reader->GetBackRef(object_id));
if (array == NULL) {
array = &(Array::ZoneHandle(reader->isolate(),
- NEW_OBJECT_WITH_LEN(Array, len)));
+ NEW_OBJECT_WITH_LEN_SPACE(Array, len, kind)));
reader->AddBackRef(object_id, array, kIsDeserialized);
}
reader->ArrayReadFrom(*array, len, tags);
@@ -1794,7 +1799,8 @@
reader->GetBackRef(object_id));
if (array == NULL) {
array = &(ImmutableArray::ZoneHandle(
- reader->isolate(), NEW_OBJECT_WITH_LEN(ImmutableArray, len)));
+ reader->isolate(),
+ NEW_OBJECT_WITH_LEN_SPACE(ImmutableArray, len, kind)));
reader->AddBackRef(object_id, array, kIsDeserialized);
}
reader->ArrayReadFrom(*array, len, tags);
@@ -1838,7 +1844,7 @@
if (kind == Snapshot::kFull) {
array = reader->NewGrowableObjectArray();
} else {
- array = GrowableObjectArray::New(0);
+ array = GrowableObjectArray::New(0, HEAP_SPACE(kind));
}
reader->AddBackRef(object_id, &array, kIsDeserialized);
intptr_t length = reader->ReadSmiValue();
@@ -1890,9 +1896,8 @@
ASSERT(reader != NULL);
intptr_t len = reader->ReadSmiValue();
- Heap::Space space = (kind == Snapshot::kFull) ? Heap::kOld : Heap::kNew;
- HandleT& result =
- HandleT::ZoneHandle(reader->isolate(), HandleT::New(len, space));
+ HandleT& result = HandleT::ZoneHandle(
+ reader->isolate(), HandleT::New(len, HEAP_SPACE(kind)));
reader->AddBackRef(object_id, &result, kIsDeserialized);
// Set the object tags.
@@ -1950,7 +1955,7 @@
const Class& cls = Class::Handle( \
reader->isolate()->object_store()->external_##lname##_array_class()); \
return NewExternalImpl<External##name##Array, RawExternal##name##Array>( \
- cls, data, length, peer, callback, Heap::kNew); \
+ cls, data, length, peer, callback, HEAP_SPACE(kind)); \
} \
@@ -2089,8 +2094,7 @@
// Allocate JSRegExp object.
JSRegExp& regex = JSRegExp::ZoneHandle(
- reader->isolate(),
- JSRegExp::New(len, (kind == Snapshot::kFull) ? Heap::kOld : Heap::kNew));
+ reader->isolate(), JSRegExp::New(len, HEAP_SPACE(kind)));
reader->AddBackRef(object_id, &regex, kIsDeserialized);
// Set the object tags.
@@ -2143,8 +2147,7 @@
// Allocate the weak property object.
WeakProperty& weak_property = WeakProperty::ZoneHandle(
- reader->isolate(),
- WeakProperty::New((kind == Snapshot::kFull) ? Heap::kOld : Heap::kNew));
+ reader->isolate(), WeakProperty::New(HEAP_SPACE(kind)));
reader->AddBackRef(object_id, &weak_property, kIsDeserialized);
// Set the object tags.
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/snapshot.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698