[vm] Cleanup reload debugging code.

TEST=ci
Change-Id: I840fc1a614186e0f330f4b2313a6706452af6998
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/388665
Reviewed-by: Alexander Aprelev <aam@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
This commit is contained in:
Ryan Macnak
2024-10-07 22:29:49 +00:00
committed by Commit Queue
parent fa75e88591
commit 0ab55451f4
7 changed files with 22 additions and 79 deletions
+1 -55
View File
@@ -228,12 +228,9 @@ Become::~Become() {
Thread::Current()->isolate_group()->set_become(nullptr);
}
void Become::Add(const Object& before,
const Object& after,
const char* whence) {
void Become::Add(const Object& before, const Object& after) {
pointers_.Add(before.ptr());
pointers_.Add(after.ptr());
whence_.Add(whence);
}
void Become::VisitObjectPointers(ObjectPointerVisitor* visitor) {
@@ -296,56 +293,6 @@ void Become::Forward() {
return;
}
{
intptr_t conflicts = 0;
MallocDirectChainedHashMap<PtrIntTrait> map(pointers_.length() / 2);
for (intptr_t i = 0; i < pointers_.length(); i += 2) {
ObjectPtr before = pointers_[i];
auto* pair = map.Lookup(before);
if (pair == nullptr) {
map.Insert({before, i + 1}); // 0 value is sentinel.
} else {
intptr_t j = pair->value - 1; // 0 value is sentinel.
ObjectPtr before1 = pointers_[j];
ObjectPtr after1 = pointers_[j + 1];
ObjectPtr before2 = pointers_[i];
ObjectPtr after2 = pointers_[i + 1];
const char* whence1 = whence_[j / 2];
const char* whence2 = whence_[i / 2];
OS::PrintErr("become conflict:\n");
OS::PrintErr("whence1 = %s\n", whence1);
OS::PrintErr("whence2 = %s\n", whence2);
OS::PrintErr("before1 cid = %" Pd "\n", before1.GetClassId());
OS::PrintErr(" after1 cid = %" Pd "\n", after1.GetClassId());
OS::PrintErr("before2 cid = %" Pd "\n", before2.GetClassId());
OS::PrintErr(" after2 cid = %" Pd "\n", after2.GetClassId());
OS::PrintErr("before1 size = %" Pd "\n", before1.untag()->HeapSize());
OS::PrintErr(" after1 size = %" Pd "\n", after1.untag()->HeapSize());
OS::PrintErr("before2 size = %" Pd "\n", before2.untag()->HeapSize());
OS::PrintErr(" after2 size = %" Pd "\n", after2.untag()->HeapSize());
#ifndef PRODUCT
ClassTable* class_table = IsolateGroup::Current()->class_table();
OS::PrintErr("before1 cls = %s\n",
class_table->UserVisibleNameFor(before1.GetClassId()));
OS::PrintErr(" after1 cls = %s\n",
class_table->UserVisibleNameFor(after1.GetClassId()));
OS::PrintErr("before2 cls = %s\n",
class_table->UserVisibleNameFor(before2.GetClassId()));
OS::PrintErr(" after2 cls = %s\n",
class_table->UserVisibleNameFor(after2.GetClassId()));
#endif
conflicts++;
}
}
if (conflicts != 0) {
FATAL("%" Pd " become conflicts", conflicts);
}
}
Thread* thread = Thread::Current();
auto heap = thread->isolate_group()->heap();
@@ -394,7 +341,6 @@ void Become::Forward() {
}
#endif
pointers_.Clear();
whence_.Clear();
}
void Become::FollowForwardingPointers(Thread* thread) {
+2 -2
View File
@@ -98,7 +98,8 @@ class Become {
Become();
~Become();
void Add(const Object& before, const Object& after, const char* whence);
void Add(const Object& before, const Object& after);
void Forward();
void Exchange() { UNIMPLEMENTED(); }
@@ -115,7 +116,6 @@ class Become {
private:
MallocGrowableArray<ObjectPtr> pointers_;
MallocGrowableArray<const char*> whence_;
DISALLOW_COPY_AND_ASSIGN(Become);
};
+6 -6
View File
@@ -22,7 +22,7 @@ void TestBecomeForward(Heap::Space before_space, Heap::Space after_space) {
EXPECT(before_obj.ptr() != after_obj.ptr());
Become become;
become.Add(before_obj, after_obj, "test");
become.Add(before_obj, after_obj);
become.Forward();
EXPECT(before_obj.ptr() == after_obj.ptr());
@@ -64,7 +64,7 @@ ISOLATE_UNIT_TEST_CASE(BecomeForwardPeer) {
EXPECT_EQ(no_peer, heap->GetPeer(after_obj.ptr()));
Become become;
become.Add(before_obj, after_obj, "test");
become.Add(before_obj, after_obj);
become.Forward();
EXPECT(before_obj.ptr() == after_obj.ptr());
@@ -86,7 +86,7 @@ ISOLATE_UNIT_TEST_CASE(BecomeForwardObjectId) {
EXPECT_EQ(no_id, heap->GetObjectId(after_obj.ptr()));
Become become;
become.Add(before_obj, after_obj, "test");
become.Add(before_obj, after_obj);
become.Forward();
EXPECT(before_obj.ptr() == after_obj.ptr());
@@ -112,7 +112,7 @@ ISOLATE_UNIT_TEST_CASE(BecomeForwardMessageId) {
isolate->forward_table_old()->GetValueExclusive(after_obj.ptr()));
Become become;
become.Add(before_obj, after_obj, "test");
become.Add(before_obj, after_obj);
become.Forward();
EXPECT(before_obj.ptr() == after_obj.ptr());
@@ -138,7 +138,7 @@ ISOLATE_UNIT_TEST_CASE(BecomeForwardRememberedObject) {
EXPECT(before_obj.ptr() != after_obj.ptr());
Become become;
become.Add(before_obj, after_obj, "test");
become.Add(before_obj, after_obj);
become.Forward();
EXPECT(before_obj.ptr() == after_obj.ptr());
@@ -167,7 +167,7 @@ ISOLATE_UNIT_TEST_CASE(BecomeForwardRememberedCards) {
}
Become become;
become.Add(old_element, new_element, "test");
become.Add(old_element, new_element);
become.Forward();
EXPECT(old_element.ptr() == new_element.ptr());
+2 -2
View File
@@ -992,7 +992,7 @@ void IsolateGroup::RehashConstants(Become* become) {
}
if (old_value.ptr() != new_value.ptr()) {
become->Add(old_value, new_value, "enum forwarding");
become->Add(old_value, new_value);
}
if (new_value.IsCanonical()) {
cls.InsertCanonicalConstant(zone, new_value);
@@ -1013,7 +1013,7 @@ void IsolateGroup::RehashConstants(Become* become) {
} else {
new_value = old_value.Canonicalize(thread);
if (old_value.ptr() != new_value.ptr()) {
become->Add(old_value, new_value, "constant forwarding");
become->Add(old_value, new_value);
}
}
}
+8 -9
View File
@@ -357,9 +357,7 @@ void InstanceMorpher::CreateMorphedCopies(Become* become) {
// instances of any class with the old size.
Become::MakeDummyObject(before);
become->Add(
before, after,
is_canonical ? "instance morphing canonical" : "instance morphing");
become->Add(before, after);
}
}
@@ -1281,7 +1279,7 @@ void ProgramReloadContext::RegisterClass(const Class& new_cls) {
IG->class_table()->SetAt(old_cls.id(), new_cls.ptr());
new_cls.CopyCanonicalConstants(old_cls);
new_cls.CopyDeclarationType(old_cls);
AddBecomeMapping(old_cls, new_cls, "class forwarding");
AddBecomeMapping(old_cls, new_cls);
AddClassMapping(new_cls, old_cls);
}
@@ -1627,6 +1625,7 @@ void ProgramReloadContext::RollbackLibraries() {
}
void ProgramReloadContext::VerifyMaps() {
#if defined(DEBUG)
TIMELINE_SCOPE(VerifyMaps);
// Verify that two old classes aren't both mapped to the same new
@@ -1686,6 +1685,7 @@ void ProgramReloadContext::VerifyMaps() {
}
library_map.Release();
reverse_library_map.Release();
#endif // defined(DEBUG)
}
void ProgramReloadContext::CommitBeforeInstanceMorphing() {
@@ -2589,7 +2589,7 @@ void ProgramReloadContext::BuildLibraryMapping() {
// Replaced class.
AddLibraryMapping(replacement_or_new, old);
AddBecomeMapping(old, replacement_or_new, "library forwarding");
AddBecomeMapping(old, replacement_or_new);
}
}
}
@@ -2698,13 +2698,12 @@ void ProgramReloadContext::AddStaticFieldMapping(const Field& old_field,
const Field& new_field) {
ASSERT(old_field.is_static());
ASSERT(new_field.is_static());
AddBecomeMapping(old_field, new_field, "static field");
AddBecomeMapping(old_field, new_field);
}
void ProgramReloadContext::AddBecomeMapping(const Object& old,
const Object& neu,
const char* whence) {
become_.Add(old, neu, whence);
const Object& neu) {
become_.Add(old, neu);
}
void ProgramReloadContext::RestoreClassHierarchyInvariants() {
+1 -3
View File
@@ -379,9 +379,7 @@ class ProgramReloadContext {
void AddLibraryMapping(const Library& replacement_or_new,
const Library& original);
void AddStaticFieldMapping(const Field& old_field, const Field& new_field);
void AddBecomeMapping(const Object& old,
const Object& neu,
const char* whence);
void AddBecomeMapping(const Object& old, const Object& neu);
void RestoreClassHierarchyInvariants();
Become become_;
+2 -2
View File
@@ -338,7 +338,7 @@ void Class::MigrateImplicitStaticClosures(ProgramReloadContext* irc,
if (old_closure.IsCanonical()) {
new_closure.SetCanonical();
}
irc->AddBecomeMapping(old_closure, new_closure, "static tear-off");
irc->AddBecomeMapping(old_closure, new_closure);
}
}
}
@@ -758,7 +758,7 @@ void Library::CheckReload(const Library& replacement,
// The replacement of the old prefix with the new prefix
// in Isolate::loaded_prefixes_set_ implicitly carried
// the loaded state over to the new prefix.
context->AddBecomeMapping(original_prefix, prefix, "library prefix");
context->AddBecomeMapping(original_prefix, prefix);
}
}
}