summaryrefslogtreecommitdiff
path: root/chromium/v8/src/objects/backing-store.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-12 14:27:29 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2020-10-13 09:35:20 +0000
commitc30a6232df03e1efbd9f3b226777b07e087a1122 (patch)
treee992f45784689f373bcc38d1b79a239ebe17ee23 /chromium/v8/src/objects/backing-store.cc
parent7b5b123ac58f58ffde0f4f6e488bcd09aa4decd3 (diff)
downloadqtwebengine-chromium-85-based.tar.gz
BASELINE: Update Chromium to 85.0.4183.14085-based
Change-Id: Iaa42f4680837c57725b1344f108c0196741f6057 Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'chromium/v8/src/objects/backing-store.cc')
-rw-r--r--chromium/v8/src/objects/backing-store.cc18
1 files changed, 14 insertions, 4 deletions
diff --git a/chromium/v8/src/objects/backing-store.cc b/chromium/v8/src/objects/backing-store.cc
index bd9f39b7d3a..0913d829937 100644
--- a/chromium/v8/src/objects/backing-store.cc
+++ b/chromium/v8/src/objects/backing-store.cc
@@ -428,10 +428,20 @@ std::unique_ptr<BackingStore> BackingStore::AllocateWasmMemory(
auto backing_store =
TryAllocateWasmMemory(isolate, initial_pages, maximum_pages, shared);
- if (!backing_store && maximum_pages > initial_pages) {
- // If reserving {maximum_pages} failed, try with maximum = initial.
+ if (maximum_pages == initial_pages) {
+ // If initial pages, and maximum are equal, nothing more to do return early.
+ return backing_store;
+ }
+
+ // Retry with smaller maximum pages at each retry.
+ const int kAllocationTries = 3;
+ auto delta = (maximum_pages - initial_pages) / (kAllocationTries + 1);
+ size_t sizes[] = {maximum_pages - delta, maximum_pages - 2 * delta,
+ maximum_pages - 3 * delta, initial_pages};
+
+ for (size_t i = 0; i < arraysize(sizes) && !backing_store; i++) {
backing_store =
- TryAllocateWasmMemory(isolate, initial_pages, initial_pages, shared);
+ TryAllocateWasmMemory(isolate, initial_pages, sizes[i], shared);
}
return backing_store;
}
@@ -646,7 +656,7 @@ SharedWasmMemoryData* BackingStore::get_shared_wasm_memory_data() {
namespace {
// Implementation details of GlobalBackingStoreRegistry.
struct GlobalBackingStoreRegistryImpl {
- GlobalBackingStoreRegistryImpl() {}
+ GlobalBackingStoreRegistryImpl() = default;
base::Mutex mutex_;
std::unordered_map<const void*, std::weak_ptr<BackingStore>> map_;
};