Commit fb1687cb authored by jgruber's avatar jgruber Committed by Commit Bot

[heap] Fix gcc compile error related to lambda visibility

GCC may be buggy in how it handles visibility in this case. The
previous nested implementation resulted in a 'lambda1 declared with
greater visibility than the type of its field lambda2' error.

Unnesting the inner lambda works around the error.

Bug: v8:8126
Change-Id: Id822ca80fec9af27c4adc7ff53be3b6d9478f0d7
Reviewed-on: https://chromium-review.googlesource.com/1206310Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#55638}
parent 1e0f101a
......@@ -3003,13 +3003,14 @@ class RememberedSetUpdatingItem : public UpdatingItem {
if (chunk_->typed_slot_set<OLD_TO_NEW, AccessMode::NON_ATOMIC>() !=
nullptr) {
CHECK_NE(chunk_->owner(), heap_->map_space());
const auto check_and_update_old_to_new_slot_fn =
[this](MaybeObject** slot) {
return CheckAndUpdateOldToNewSlot(reinterpret_cast<Address>(slot));
};
RememberedSet<OLD_TO_NEW>::IterateTyped(
chunk_, [this](SlotType slot_type, Address host_addr, Address slot) {
chunk_, [=](SlotType slot_type, Address host_addr, Address slot) {
return UpdateTypedSlotHelper::UpdateTypedSlot(
heap_, slot_type, slot, [this](MaybeObject** slot) {
return CheckAndUpdateOldToNewSlot(
reinterpret_cast<Address>(slot));
});
heap_, slot_type, slot, check_and_update_old_to_new_slot_fn);
});
}
if ((updating_mode_ == RememberedSetUpdatingMode::ALL) &&
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment