1
0
Files
nodejs-electron/bad-font-gc000.patch
Bruno Pitrus 29251bbf34 Accepting request 1187058 from home:dziobian:gulgul-ultron:19
- New upstream release 30.2.0
  * Node 20.15.0
  * Enabled the Windows Control Overlay API on Linux.
  * Expose systemPreferences to utilityProcess.
  * Fixed a focus issue when calling BrowserWindow.setTopBrowserView.
  * Fixed an issue where fetch-dependent interfaces could be missing in Web Workers with nodeIntegrationInWorker enabled.
  * Fixed an issue where control could fail to return properly after saving a dialog using showOpenDialogSync on Linux.
  * Fixes an issue where the user-specified default path did not work in some circumstances when using Linux dialogs.
  * Fixes potentially incorrect exit code in UtilityProcess.
  * (Leap 15.5) Fix heap buffer overflow in libaom (CVE-2024-5493 bsc#1225690)
  * Security fixes for V8: CVE-2024-6100, CVE-2024-6101 (bsc#1226504)
  * Fix use after free in Swiftshader (CVE-2024-6291 bsc#1226933)
- Update to 30.1.2 XXXFIXMEXXX
  * ABI break: NODE_MODULE_VERSION is now 123
  * Chromium 124.0.6367.243
  * Node 20.14.0
  * V8 12.4
  * Added WebContentsView and BaseWindow, replacing the now-deprecated BrowserView APIs.
  * cross-origin iframes now use Permission Policy to access features
  * Removed: The --disable-color-correct-rendering switch
  * The inputFieldType property in the context-menu params has been removed
  * Removed: process.getIOCounters()
  * see https://www.electronjs.org/blog/electron-30-0 and https://github.com/electron/electron/releases/tag/v30.0.0 for more
- Fedora: use bundled simdutf as the system version is too old
- Drop no longer needed patches
  * chromium-122-avoid-SFINAE-TypeConverter.patch
  * chromium-122-BookmarkNode-missing-operator.patch
  * chromium-98-EnumTable-crash.patch
  * chromium-gcc11.patch
  * CVE-2024-30260-undici-clear-proxy-authorization.patch
  * CVE-2024-30261-undici-fetch-integrity.patch
  * ElectronDesktopWindowTreeHostLinux-OnWindowTiledStateChanged-crash.patch
  * grid_sizing_tree-Wchanges-meaning.patch
  * hit_test_request-missing-optional.patch
  * InternalAllocator-too-many-initializers.patch
  * material_color_utilities-tones-missing-round.patch
  * nested-nested-nested-nested-nested-nested-regex-patterns.patch
  * perfetto-numeric_storage-double_t.patch
  * plus_address_types-missing-optional.patch
  * race_network_request_write_buffer_manager-missing-optional.patch
  * resolution_monitor-missing-bitset.patch
  * script_promise_resolver-explicit-specialization.patch
  * search_engine_choice_service-missing-optional.patch
  * text_break_iterator-icu74-breakAllLineBreakClassTable-should-be-consistent.patch
  * v8-instance-type-inl-constexpr-used-before-its-definition.patch
- Drop no longer needed -Wno-error=narrowing from CXXFLAGS
- Add patches to fix build
  * chromium-124-shims.patch
  * enable_stack_trace_line_numbers-symbol_level.patch
  * angle-FramebufferVk-powf.patch
  * licenses.py-FileNotFoundError.patch
  * span_reader-missing-optional.patch
  * bitset-missing-uint8_t-memcpy.patch
  * temporal_scalability_id_extractor-missing-bitset.patch
  * gpu_adapter_info-missing-optional.patch
  * first_party_sets_handler_database_helper-missing-optional.patch
  * async_iterable-forwarding.patch
  * preview_cancel_reason-missing-string.patch
  * script_streamer-atomic-include.patch
- Add -Wno-packed-not-aligned -Wno-address to CXXFLAGS to suppress build logspam
- Add libaom_av1_encoder-aom37-AV1E_SET_MAX_CONSEC_FRAME_DROP_CBR.patch to build with old libaom
- Add backported DesktopNativeWidgetAura-HandleActivationChanged-crash.patch
- Revert upstream changes which introduce a use-after-free bug causing crashes (bsc#1224178 deb#1067886)
  * bad-font-gc0000.patch
  * bad-font-gc000.patch
  * bad-font-gc00.patch
  * bad-font-gc0.patch
  * bad-font-gc11.patch
  * bad-font-gc1.patch
  * bad-font-gc2.patch
  * bad-font-gc3.patch

OBS-URL: https://build.opensuse.org/request/show/1187058
OBS-URL: https://build.opensuse.org/package/show/devel:languages:nodejs/nodejs-electron?expand=0&rev=159
2024-07-12 10:45:39 +00:00

108 lines
3.8 KiB
Diff

Revert the following commit:
commit 5ffa0446f51e34d06dc0539810a8a5d35ec9e3fc
Author: Ian Kilpatrick <ikilpatrick@chromium.org>
Date: Thu Feb 22 17:08:22 2024 +0000
[fonts][perf] Explicitly leak SimpleFontDatas via a LRU cache.
This adds a strong LRU cache to FontDataCache to retain the most
recently used fonts.
This covers the case where a large amount of DOM is destroyed, and
previously we'd release all the font related objects if the GC kicked
in.
Speedometer3 appears to peak at ~75 objects in the cache.
Results for different cache sizes:
Cache size: 64 | 32 | 16
Speedometer3: +0.9% | +0.5% | +0%
Bug: 41490008
Change-Id: I131b6a79f246e61e13a7d44dddbc1f9e625ed44a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5314842
Reviewed-by: Dominik Röttsches <drott@chromium.org>
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1264027}
--- a/third_party/blink/renderer/platform/fonts/font_data_cache.cc
+++ b/third_party/blink/renderer/platform/fonts/font_data_cache.cc
@@ -36,15 +36,6 @@
namespace blink {
-namespace {
-
-// The maximum number of strong references to retain via the LRU.
-// This explicitly leaks fonts (and related objects) unless under extreme
-// memory pressure where it will be cleared. DO NOT increase unnecessarily.
-const wtf_size_t kMaxSize = 64;
-
-} // namespace
-
const SimpleFontData* FontDataCache::Get(const FontPlatformData* platform_data,
bool subpixel_ascent_descent) {
if (!platform_data)
@@ -64,16 +55,7 @@ const SimpleFontData* FontDataCache::Get
add_result.stored_value->value = MakeGarbageCollected<SimpleFontData>(
platform_data, nullptr, subpixel_ascent_descent);
}
-
- const SimpleFontData* result = add_result.stored_value->value;
-
- // Update our LRU to keep a strong reference to `result`.
- strong_reference_lru_.PrependOrMoveToFirst(result);
- while (strong_reference_lru_.size() > kMaxSize) {
- strong_reference_lru_.pop_back();
- }
-
- return result;
+ return add_result.stored_value->value;
}
} // namespace blink
--- a/third_party/blink/renderer/platform/fonts/font_data_cache.h
+++ b/third_party/blink/renderer/platform/fonts/font_data_cache.h
@@ -34,7 +34,6 @@
#include "third_party/blink/renderer/platform/fonts/font_platform_data.h"
#include "third_party/blink/renderer/platform/fonts/simple_font_data.h"
#include "third_party/blink/renderer/platform/heap/collection_support/heap_hash_map.h"
-#include "third_party/blink/renderer/platform/heap/collection_support/heap_linked_hash_set.h"
namespace blink {
@@ -59,29 +58,17 @@ class FontDataCache final {
FontDataCache(const FontDataCache&) = delete;
FontDataCache& operator=(const FontDataCache&) = delete;
- void Trace(Visitor* visitor) const {
- visitor->Trace(cache_);
- visitor->Trace(strong_reference_lru_);
- }
+ void Trace(Visitor* visitor) const { visitor->Trace(cache_); }
const SimpleFontData* Get(const FontPlatformData*,
bool subpixel_ascent_descent = false);
- void Clear() {
- cache_.clear();
- strong_reference_lru_.clear();
- }
+ void Clear() { cache_.clear(); }
private:
HeapHashMap<Member<const FontPlatformData>,
WeakMember<const SimpleFontData>,
FontDataCacheKeyHashTraits>
cache_;
-
- // The above `cache_` is weak, meaning its entries will potentially be
- // cleared if no other references exist.
- // This LRU keeps a small (limited) number of strong references alive so they
- // won't be cleared in the above cache for performance reasons.
- HeapLinkedHashSet<Member<const SimpleFontData>> strong_reference_lru_;
};
} // namespace blink