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

Unified Diff: test/cctest/test-serialize.cc

Issue 2628093003: [serializer] change internal field callbacks to take data pointer. (Closed)
Patch Set: Created 3 years, 11 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 | « src/snapshot/partial-serializer.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/cctest/test-serialize.cc
diff --git a/test/cctest/test-serialize.cc b/test/cctest/test-serialize.cc
index ba3738e2e7413796c14bd46deea5eaf45be6ac2f..9644d0962428a245672aa8214af8c4c3561eea13 100644
--- a/test/cctest/test-serialize.cc
+++ b/test/cctest/test-serialize.cc
@@ -285,7 +285,8 @@ static void PartiallySerializeObject(Vector<const byte>* startup_blob_out,
isolate, v8::SnapshotCreator::FunctionCodeHandling::kClear);
startup_serializer.SerializeStrongReferences();
- PartialSerializer partial_serializer(isolate, &startup_serializer, nullptr);
+ PartialSerializer partial_serializer(isolate, &startup_serializer,
+ v8::SerializeInternalFieldsCallback());
partial_serializer.Serialize(&raw_foo, false);
startup_serializer.SerializeWeakReferencesAndDeferred();
@@ -321,7 +322,9 @@ UNINITIALIZED_TEST(PartialSerializerObject) {
{
SnapshotData snapshot_data(partial_blob);
Deserializer deserializer(&snapshot_data);
- root = deserializer.DeserializePartial(isolate, global_proxy, nullptr)
+ root = deserializer
+ .DeserializePartial(isolate, global_proxy,
+ v8::DeserializeInternalFieldsCallback())
.ToHandleChecked();
CHECK(root->IsString());
}
@@ -330,7 +333,9 @@ UNINITIALIZED_TEST(PartialSerializerObject) {
{
SnapshotData snapshot_data(partial_blob);
Deserializer deserializer(&snapshot_data);
- root2 = deserializer.DeserializePartial(isolate, global_proxy, nullptr)
+ root2 = deserializer
+ .DeserializePartial(isolate, global_proxy,
+ v8::DeserializeInternalFieldsCallback())
.ToHandleChecked();
CHECK(root2->IsString());
CHECK(root.is_identical_to(root2));
@@ -385,7 +390,8 @@ static void PartiallySerializeContext(Vector<const byte>* startup_blob_out,
startup_serializer.SerializeStrongReferences();
SnapshotByteSink partial_sink;
- PartialSerializer partial_serializer(isolate, &startup_serializer, nullptr);
+ PartialSerializer partial_serializer(isolate, &startup_serializer,
+ v8::SerializeInternalFieldsCallback());
partial_serializer.Serialize(&raw_context, false);
startup_serializer.SerializeWeakReferencesAndDeferred();
@@ -419,7 +425,9 @@ UNINITIALIZED_TEST(PartialSerializerContext) {
{
SnapshotData snapshot_data(partial_blob);
Deserializer deserializer(&snapshot_data);
- root = deserializer.DeserializePartial(isolate, global_proxy, nullptr)
+ root = deserializer
+ .DeserializePartial(isolate, global_proxy,
+ v8::DeserializeInternalFieldsCallback())
.ToHandleChecked();
CHECK(root->IsContext());
CHECK(Handle<Context>::cast(root)->global_proxy() == *global_proxy);
@@ -429,7 +437,9 @@ UNINITIALIZED_TEST(PartialSerializerContext) {
{
SnapshotData snapshot_data(partial_blob);
Deserializer deserializer(&snapshot_data);
- root2 = deserializer.DeserializePartial(isolate, global_proxy, nullptr)
+ root2 = deserializer
+ .DeserializePartial(isolate, global_proxy,
+ v8::DeserializeInternalFieldsCallback())
.ToHandleChecked();
CHECK(root2->IsContext());
CHECK(!root.is_identical_to(root2));
@@ -505,7 +515,8 @@ static void PartiallySerializeCustomContext(
startup_serializer.SerializeStrongReferences();
SnapshotByteSink partial_sink;
- PartialSerializer partial_serializer(isolate, &startup_serializer, nullptr);
+ PartialSerializer partial_serializer(isolate, &startup_serializer,
+ v8::SerializeInternalFieldsCallback());
partial_serializer.Serialize(&raw_context, false);
startup_serializer.SerializeWeakReferencesAndDeferred();
@@ -539,7 +550,9 @@ UNINITIALIZED_TEST(PartialSerializerCustomContext) {
{
SnapshotData snapshot_data(partial_blob);
Deserializer deserializer(&snapshot_data);
- root = deserializer.DeserializePartial(isolate, global_proxy, nullptr)
+ root = deserializer
+ .DeserializePartial(isolate, global_proxy,
+ v8::DeserializeInternalFieldsCallback())
.ToHandleChecked();
CHECK(root->IsContext());
Handle<Context> context = Handle<Context>::cast(root);
@@ -2161,25 +2174,27 @@ struct InternalFieldData {
uint32_t data;
};
-v8::StartupData SerializeInternalFields(v8::Local<v8::Object> holder,
- int index) {
- InternalFieldData* data = static_cast<InternalFieldData*>(
+v8::StartupData SerializeInternalFields(v8::Local<v8::Object> holder, int index,
+ void* data) {
+ CHECK_EQ(reinterpret_cast<void*>(2016), data);
+ InternalFieldData* internal_field = static_cast<InternalFieldData*>(
holder->GetAlignedPointerFromInternalField(index));
- int size = sizeof(*data);
+ int size = sizeof(*internal_field);
char* payload = new char[size];
// We simply use memcpy to serialize the content.
- memcpy(payload, data, size);
+ memcpy(payload, internal_field, size);
return {payload, size};
}
std::vector<InternalFieldData*> deserialized_data;
void DeserializeInternalFields(v8::Local<v8::Object> holder, int index,
- v8::StartupData payload) {
- InternalFieldData* data = new InternalFieldData{0};
- memcpy(data, payload.data, payload.raw_size);
- holder->SetAlignedPointerInInternalField(index, data);
- deserialized_data.push_back(data);
+ v8::StartupData payload, void* data) {
+ CHECK_EQ(reinterpret_cast<void*>(2017), data);
+ InternalFieldData* internal_field = new InternalFieldData{0};
+ memcpy(internal_field, payload.data, payload.raw_size);
+ holder->SetAlignedPointerInInternalField(index, internal_field);
+ deserialized_data.push_back(internal_field);
}
TEST(SnapshotCreatorTemplates) {
@@ -2231,7 +2246,10 @@ TEST(SnapshotCreatorTemplates) {
c->SetInternalField(2, field_external);
CHECK(context->Global()->Set(context, v8_str("a"), a).FromJust());
- CHECK_EQ(0u, creator.AddContext(context, SerializeInternalFields));
+ CHECK_EQ(0u,
+ creator.AddContext(context, v8::SerializeInternalFieldsCallback(
+ SerializeInternalFields,
+ reinterpret_cast<void*>(2016))));
CHECK_EQ(0u, creator.AddTemplate(callback));
CHECK_EQ(1u, creator.AddTemplate(global_template));
}
@@ -2255,7 +2273,10 @@ TEST(SnapshotCreatorTemplates) {
// Create a new context without a new object template.
v8::HandleScope handle_scope(isolate);
v8::Local<v8::Context> context =
- v8::Context::FromSnapshot(isolate, 0, DeserializeInternalFields)
+ v8::Context::FromSnapshot(
+ isolate, 0,
+ v8::DeserializeInternalFieldsCallback(
+ DeserializeInternalFields, reinterpret_cast<void*>(2017)))
.ToLocalChecked();
v8::Context::Scope context_scope(context);
ExpectInt32("f()", 42);
@@ -2408,7 +2429,10 @@ TEST(SnapshotCreatorIncludeGlobalProxy) {
.ToLocalChecked())
.FromJust());
- CHECK_EQ(0u, creator.AddContext(context, SerializeInternalFields));
+ CHECK_EQ(0u,
+ creator.AddContext(context, v8::SerializeInternalFieldsCallback(
+ SerializeInternalFields,
+ reinterpret_cast<void*>(2016))));
}
blob =
creator.CreateBlob(v8::SnapshotCreator::FunctionCodeHandling::kClear);
@@ -2452,8 +2476,12 @@ TEST(SnapshotCreatorIncludeGlobalProxy) {
// will use the global object from the snapshot, including interceptor.
v8::HandleScope handle_scope(isolate);
v8::Local<v8::Context> context =
- v8::Context::FromSnapshot(isolate, 0, DeserializeInternalFields)
+ v8::Context::FromSnapshot(
+ isolate, 0,
+ v8::DeserializeInternalFieldsCallback(
+ DeserializeInternalFields, reinterpret_cast<void*>(2017)))
.ToLocalChecked();
+
{
v8::Context::Scope context_scope(context);
ExpectInt32("f()", 42);
@@ -2480,8 +2508,11 @@ TEST(SnapshotCreatorIncludeGlobalProxy) {
// New context, but reuse global proxy.
v8::ExtensionConfiguration* no_extensions = nullptr;
v8::Local<v8::Context> context2 =
- v8::Context::FromSnapshot(isolate, 0, DeserializeInternalFields,
- no_extensions, global)
+ v8::Context::FromSnapshot(
+ isolate, 0,
+ v8::DeserializeInternalFieldsCallback(
+ DeserializeInternalFields, reinterpret_cast<void*>(2017)),
+ no_extensions, global)
.ToLocalChecked();
{
v8::Context::Scope context_scope(context2);
« no previous file with comments | « src/snapshot/partial-serializer.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698