summaryrefslogtreecommitdiff
path: root/chromium/v8/src/sandbox/external-pointer-table-inl.h
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2023-01-11 13:41:06 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2023-01-11 14:02:23 +0000
commit01e89433adf2d5575b2089716217299519a9ce15 (patch)
tree5615c6e52f2016c227e6d936cb5005ee6f15418a /chromium/v8/src/sandbox/external-pointer-table-inl.h
parent2b11b39a6627d8c71636227374dd8f8ea78c3e6a (diff)
downloadqtwebengine-chromium-01e89433adf2d5575b2089716217299519a9ce15.tar.gz
BASELINE: Update Chromium to 108.0.5359.181
Change-Id: Iae2b9d190e7789ad5556dbf4c59498e05ce6e5d2 Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/453305 Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'chromium/v8/src/sandbox/external-pointer-table-inl.h')
-rw-r--r--chromium/v8/src/sandbox/external-pointer-table-inl.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/chromium/v8/src/sandbox/external-pointer-table-inl.h b/chromium/v8/src/sandbox/external-pointer-table-inl.h
index 1e4ff34e614..9295ddd3a3f 100644
--- a/chromium/v8/src/sandbox/external-pointer-table-inl.h
+++ b/chromium/v8/src/sandbox/external-pointer-table-inl.h
@@ -6,6 +6,7 @@
#define V8_SANDBOX_EXTERNAL_POINTER_TABLE_INL_H_
#include "src/base/atomicops.h"
+#include "src/common/assert-scope.h"
#include "src/sandbox/external-pointer-table.h"
#include "src/sandbox/external-pointer.h"
#include "src/utils/allocation.h"
@@ -75,6 +76,13 @@ ExternalPointerHandle ExternalPointerTable::AllocateAndInitializeEntry(
Isolate* isolate, Address initial_value, ExternalPointerTag tag) {
DCHECK(is_initialized());
+ // We currently don't want entry allocation to trigger garbage collection as
+ // this may cause seemingly harmless pointer field assignments to trigger
+ // garbage collection. This is especially true for lazily-initialized
+ // external pointer slots which will typically only allocate the external
+ // pointer table entry when the pointer is first set to a non-null value.
+ DisallowGarbageCollection no_gc;
+
Freelist freelist;
bool success = false;
while (!success) {