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

Unified Diff: src/heap/mark-compact.cc

Issue 2025833002: [heap] Store the host address in the typed remembered set. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: rebase. Created 4 years, 6 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/heap/heap.cc ('k') | src/heap/remembered-set.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/mark-compact.cc
diff --git a/src/heap/mark-compact.cc b/src/heap/mark-compact.cc
index 5cf89e741f8c6732d8db79f7cf34da23660063d8..dd3be110068e5a7813aef8732681a8f1b8f6eb11 100644
--- a/src/heap/mark-compact.cc
+++ b/src/heap/mark-compact.cc
@@ -1553,7 +1553,8 @@ class RecordMigratedSlotVisitor final : public ObjectVisitor {
Address code_entry = Memory::Address_at(code_entry_slot);
if (Page::FromAddress(code_entry)->IsEvacuationCandidate()) {
RememberedSet<OLD_TO_OLD>::InsertTyped(Page::FromAddress(code_entry_slot),
- CODE_ENTRY_SLOT, code_entry_slot);
+ nullptr, CODE_ENTRY_SLOT,
+ code_entry_slot);
}
}
@@ -2824,7 +2825,8 @@ void MarkCompactCollector::RecordRelocSlot(Code* host, RelocInfo* rinfo,
slot_type = OBJECT_SLOT;
}
}
- RememberedSet<OLD_TO_OLD>::InsertTyped(source_page, slot_type, addr);
+ RememberedSet<OLD_TO_OLD>::InsertTyped(
+ source_page, reinterpret_cast<Address>(host), slot_type, addr);
}
}
@@ -3605,14 +3607,15 @@ class PointerUpdateJobTraits {
if (direction == OLD_TO_OLD) {
Isolate* isolate = heap->isolate();
RememberedSet<OLD_TO_OLD>::IterateTyped(
- chunk, [isolate](SlotType type, Address slot) {
+ chunk, [isolate](SlotType type, Address host_addr, Address slot) {
return UpdateTypedSlotHelper::UpdateTypedSlot(isolate, type, slot,
UpdateSlot);
});
} else {
Isolate* isolate = heap->isolate();
RememberedSet<OLD_TO_NEW>::IterateTyped(
- chunk, [isolate, heap](SlotType type, Address slot) {
+ chunk,
+ [isolate, heap](SlotType type, Address host_addr, Address slot) {
return UpdateTypedSlotHelper::UpdateTypedSlot(
isolate, type, slot, [heap](Object** slot) {
return CheckAndUpdateOldToNewSlot(
@@ -3967,7 +3970,8 @@ void MarkCompactCollector::RecordCodeEntrySlot(HeapObject* host, Address slot,
!ShouldSkipEvacuationSlotRecording(host)) {
// TODO(ulan): remove this check after investigating crbug.com/414964.
CHECK(target->IsCode());
- RememberedSet<OLD_TO_OLD>::InsertTyped(source_page, CODE_ENTRY_SLOT, slot);
+ RememberedSet<OLD_TO_OLD>::InsertTyped(
+ source_page, reinterpret_cast<Address>(host), CODE_ENTRY_SLOT, slot);
}
}
« no previous file with comments | « src/heap/heap.cc ('k') | src/heap/remembered-set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698