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

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

Issue 2490783004: [serializer] small fixes for blink snapshot. (Closed)
Patch Set: rebase and fix Created 4 years, 1 month 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/startup-serializer.h ('k') | tools/external-reference-check.py » ('j') | 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 3ac90534baef94b8540f596d81a4affbbfa1eaa2..1b5497f7720a69fdffac3c005c289fc4618c239f 100644
--- a/test/cctest/test-serialize.cc
+++ b/test/cctest/test-serialize.cc
@@ -2022,11 +2022,15 @@ void SerializedCallbackReplacement(
args.GetReturnValue().Set(v8_num(1337));
}
+static int serialized_static_field = 314;
+
intptr_t original_external_references[] = {
- reinterpret_cast<intptr_t>(SerializedCallback), 0};
+ reinterpret_cast<intptr_t>(SerializedCallback),
+ reinterpret_cast<intptr_t>(&serialized_static_field), 0};
intptr_t replaced_external_references[] = {
- reinterpret_cast<intptr_t>(SerializedCallbackReplacement), 0};
+ reinterpret_cast<intptr_t>(SerializedCallbackReplacement),
+ reinterpret_cast<intptr_t>(&serialized_static_field), 0};
TEST(SnapshotCreatorExternalReferences) {
DisableAlwaysOpt();
@@ -2142,7 +2146,6 @@ TEST(SnapshotCreatorTemplates) {
InternalFieldData* a1 = new InternalFieldData{11};
InternalFieldData* b0 = new InternalFieldData{20};
InternalFieldData* c0 = new InternalFieldData{30};
- InternalFieldData* c1 = new InternalFieldData{31};
v8::SnapshotCreator creator(original_external_references);
v8::Isolate* isolate = creator.GetIsolate();
@@ -2158,7 +2161,7 @@ TEST(SnapshotCreatorTemplates) {
v8::Context::New(isolate, no_extension, global_template);
v8::Local<v8::ObjectTemplate> object_template =
v8::ObjectTemplate::New(isolate);
- object_template->SetInternalFieldCount(2);
+ object_template->SetInternalFieldCount(3);
v8::Context::Scope context_scope(context);
ExpectInt32("f()", 42);
@@ -2169,12 +2172,17 @@ TEST(SnapshotCreatorTemplates) {
object_template->NewInstance(context).ToLocalChecked();
v8::Local<v8::Object> c =
object_template->NewInstance(context).ToLocalChecked();
+ v8::Local<v8::External> null_external =
+ v8::External::New(isolate, nullptr);
+ v8::Local<v8::External> field_external =
+ v8::External::New(isolate, &serialized_static_field);
a->SetInternalField(0, b);
a->SetAlignedPointerInInternalField(1, a1);
b->SetAlignedPointerInInternalField(0, b0);
b->SetInternalField(1, c);
c->SetAlignedPointerInInternalField(0, c0);
- c->SetAlignedPointerInInternalField(1, c1);
+ c->SetInternalField(1, null_external);
+ c->SetInternalField(2, field_external);
CHECK(context->Global()->Set(context, v8_str("a"), a).FromJust());
CHECK_EQ(0u, creator.AddContext(context));
@@ -2186,7 +2194,6 @@ TEST(SnapshotCreatorTemplates) {
delete a1;
delete b0;
- delete c1;
delete c0;
}
@@ -2239,19 +2246,28 @@ TEST(SnapshotCreatorTemplates) {
a->GetInternalField(0)->ToObject(context).ToLocalChecked();
InternalFieldData* a1 = reinterpret_cast<InternalFieldData*>(
a->GetAlignedPointerFromInternalField(1));
+ v8::Local<v8::Value> a2 = a->GetInternalField(2);
+
InternalFieldData* b0 = reinterpret_cast<InternalFieldData*>(
b->GetAlignedPointerFromInternalField(0));
v8::Local<v8::Object> c =
b->GetInternalField(1)->ToObject(context).ToLocalChecked();
+ v8::Local<v8::Value> b2 = b->GetInternalField(2);
+
InternalFieldData* c0 = reinterpret_cast<InternalFieldData*>(
c->GetAlignedPointerFromInternalField(0));
- InternalFieldData* c1 = reinterpret_cast<InternalFieldData*>(
- c->GetAlignedPointerFromInternalField(1));
+ v8::Local<v8::Value> c1 = c->GetInternalField(1);
+ v8::Local<v8::Value> c2 = c->GetInternalField(2);
CHECK_EQ(11u, a1->data);
+ CHECK(a2->IsUndefined());
CHECK_EQ(20u, b0->data);
+ CHECK(b2->IsUndefined());
CHECK_EQ(30u, c0->data);
- CHECK_EQ(31u, c1->data);
+ CHECK(c1->IsExternal());
+ CHECK_NULL(v8::Local<v8::External>::Cast(c1)->Value());
+ CHECK_EQ(static_cast<void*>(&serialized_static_field),
+ v8::Local<v8::External>::Cast(c2)->Value());
// Accessing out of bound returns empty MaybeHandle.
CHECK(v8::ObjectTemplate::FromSnapshot(isolate, 2).IsEmpty());
@@ -2260,7 +2276,6 @@ TEST(SnapshotCreatorTemplates) {
delete a1;
delete b0;
- delete c1;
delete c0;
}
« no previous file with comments | « src/snapshot/startup-serializer.h ('k') | tools/external-reference-check.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698