diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2023-01-11 13:41:06 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2023-01-11 14:02:23 +0000 |
commit | 01e89433adf2d5575b2089716217299519a9ce15 (patch) | |
tree | 5615c6e52f2016c227e6d936cb5005ee6f15418a /chromium/v8/src/sandbox/external-pointer-table-inl.h | |
parent | 2b11b39a6627d8c71636227374dd8f8ea78c3e6a (diff) | |
download | qtwebengine-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.h | 8 |
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) { |