Don't always use string forwarding table when sharing the string table
Disable --always-use-string-forwarding-table when --shared-string-table is set. With --shared-string-table we can have parallel GCs in multiple client isolates. With --always-use-string-forwarding-table we can have young generation strings in the forwarding table, requiring table updates when the string gets promoted. This is not supported for parallel GCs. This CL also reverts the incorrect try to fix an issue with these flag combination introduced in https://crrev.com/c/3650719 Bug: v8:12877, v8:12007 Change-Id: I49a2aa300af36b82007a7d215afe9a70ac1ce39e Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3660258 Commit-Queue: Patrick Thier <pthier@chromium.org> Reviewed-by: Dominik Inführ <dinfuehr@chromium.org> Cr-Commit-Position: refs/heads/main@{#80710}
This commit is contained in:
parent
fc50b033e3
commit
d96403f5ba
@ -763,6 +763,12 @@ DEFINE_IMPLICATION(harmony_struct, shared_string_table)
|
||||
DEFINE_BOOL(
|
||||
always_use_string_forwarding_table, false,
|
||||
"use string forwarding table instead of thin strings for all strings")
|
||||
// With --always-use-string-forwarding-table, we can have young generation
|
||||
// string entries in the forwarding table, requiring table updates when these
|
||||
// strings get promoted to old space. Parallel GCs in client isolates
|
||||
// (enabled by --shared-string-table) are not supported using a single shared
|
||||
// forwarding table.
|
||||
DEFINE_NEG_IMPLICATION(shared_string_table, always_use_string_forwarding_table)
|
||||
// TOOD(pthier): The code behind this flag is not going to ship.
|
||||
// We enable it behind --future to get performance numbers and coverage from
|
||||
// bots.
|
||||
|
@ -4804,10 +4804,6 @@ void MarkCompactCollector::UpdatePointersAfterEvacuation() {
|
||||
heap_->UpdateReferencesInExternalStringTable(
|
||||
&UpdateReferenceInExternalStringTableEntry);
|
||||
|
||||
if (V8_UNLIKELY(FLAG_always_use_string_forwarding_table)) {
|
||||
isolate()->string_forwarding_table()->UpdateAfterEvacuation();
|
||||
}
|
||||
|
||||
EvacuationWeakObjectRetainer evacuation_object_retainer;
|
||||
heap()->ProcessWeakListRoots(&evacuation_object_retainer);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user