diff options
author | JustKidding <jk@vin.ovh> | 2023-02-09 15:25:50 -0500 |
---|---|---|
committer | JustKidding <jk@vin.ovh> | 2023-02-09 15:25:50 -0500 |
commit | 511cd44d37d92271b4ff542883e5434a390cdd61 (patch) | |
tree | 82298912491ed7a6295ef777e38a29b0eae31c7b | |
parent | 1be77f627909176b0328871a5c4197b8ae56e8c3 (diff) | |
download | ungoogled-chromium-511cd44d37d92271b4ff542883e5434a390cdd61.tar.gz ungoogled-chromium-511cd44d37d92271b4ff542883e5434a390cdd61.tar.bz2 ungoogled-chromium-511cd44d37d92271b4ff542883e5434a390cdd61.zip |
upgpkg: ungoogled-chromium 110.0.5481.77-1
upstream release
-rw-r--r-- | .SRCINFO | 25 | ||||
-rw-r--r-- | PKGBUILD | 37 | ||||
-rw-r--r-- | angle-wayland-include-protocol.patch | 38 | ||||
-rw-r--r-- | v8-enhance-Date-parser-to-take-Unicode-SPACE.patch | 58 | ||||
-rw-r--r-- | v8-move-the-Stack-object-from-ThreadLocalTop.patch | 205 |
5 files changed, 235 insertions, 128 deletions
@@ -1,7 +1,7 @@ pkgbase = ungoogled-chromium pkgdesc = A lightweight approach to removing Google web service dependency - pkgver = 109.0.5414.119 - pkgrel = 2 + pkgver = 110.0.5481.77 + pkgrel = 1 url = https://github.com/ungoogled-software/ungoogled-chromium arch = x86_64 license = BSD @@ -29,7 +29,7 @@ pkgbase = ungoogled-chromium depends = libpulse depends = pciutils depends = libva - depends = wayland + depends = libffi depends = desktop-file-utils depends = hicolor-icon-theme depends = fontconfig @@ -48,7 +48,6 @@ pkgbase = ungoogled-chromium depends = opus depends = harfbuzz depends = re2 - depends = libavif depends = jsoncpp depends = libxslt depends = libpng @@ -61,31 +60,29 @@ pkgbase = ungoogled-chromium provides = chromium conflicts = chromium options = !lto - source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-109.0.5414.119.tar.xz + source = https://commondatastorage.googleapis.com/chromium-browser-official/chromium-110.0.5481.77.tar.xz source = https://github.com/foutrelis/chromium-launcher/archive/v8/chromium-launcher-8.tar.gz - source = https://github.com/stha09/chromium-patches/releases/download/chromium-109-patchset-1/chromium-109-patchset-1.tar.xz - source = v8-enhance-Date-parser-to-take-Unicode-SPACE.patch + source = https://github.com/stha09/chromium-patches/releases/download/chromium-110-patchset-4/chromium-110-patchset-4.tar.xz source = fix-the-way-to-handle-codecs-in-the-system-icu.patch + source = v8-move-the-Stack-object-from-ThreadLocalTop.patch source = REVERT-roll-src-third_party-ffmpeg-m102.patch source = REVERT-roll-src-third_party-ffmpeg-m106.patch source = disable-GlobalMediaControlsCastStartStop.patch - source = angle-wayland-include-protocol.patch source = use-oauth2-client-switches-as-default.patch - source = ungoogled-chromium-109.0.5414.119-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/109.0.5414.119-1.tar.gz + source = ungoogled-chromium-110.0.5481.77-1.tar.gz::https://github.com/ungoogled-software/ungoogled-chromium/archive/110.0.5481.77-1.tar.gz source = ozone-add-va-api-support-to-wayland.patch source = vaapi-add-av1-support.patch source = remove-main-main10-profile-limit.patch - sha256sums = cbcdef5ee71acb53790ded3adef86871812b46e9f208dce8ec3f8ab04958be2d + sha256sums = e348ab2dc4311083e729d714a81e95dd9db108ff71437dde451c97ac939881ce sha256sums = 213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a - sha256sums = 1ca780a2ad5351f60671a828064392096c8da7b589086ee999f25c9e6e799a7b - sha256sums = b83406a881d66627757d9cbc05e345cbb2bd395a48b6d4c970e5e1cb3f6ed454 + sha256sums = 8c7f93037cc236024cc8be815b2c2bd84f6dc9e32685299e31d4c6c42efde8b7 sha256sums = a5d5c532b0b059895bc13aaaa600d21770eab2afa726421b78cb597a78a3c7e3 + sha256sums = 49c3e599366909ddac6a50fa6f9420e01a7c0ffd029a20567a41d741a15ec9f7 sha256sums = 30df59a9e2d95dcb720357ec4a83d9be51e59cc5551365da4c0073e68ccdec44 sha256sums = 4c12d31d020799d31355faa7d1fe2a5a807f7458e7f0c374adf55edb37032152 sha256sums = 7f3b1b22d6a271431c1f9fc92b6eb49c6d80b8b3f868bdee07a6a1a16630a302 - sha256sums = cd0d9d2a1d6a522d47c3c0891dabe4ad72eabbebc0fe5642b9e22efa3d5ee572 sha256sums = e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711 - sha256sums = e10fe46f3f4b7058c278ab86c6795cc2b68459bcb7ced5efad3355ab5c2f5de1 + sha256sums = 6620119d0b683b989da771885dd186185cc3b8e37e1b4cf143004f340446cbae sha256sums = e9e8d3a82da818f0a67d4a09be4ecff5680b0534d7f0198befb3654e9fab5b69 sha256sums = e742cc5227b6ad6c3e0c2026edd561c6d3151e7bf0afb618578ede181451b307 sha256sums = fc810e3c495c77ac60b383a27e48cf6a38b4a95b65dd2984baa297c5df83133c @@ -9,17 +9,17 @@ # Contributor: Daniel J Griffiths <ghost1227@archlinux.us> pkgname=ungoogled-chromium -pkgver=109.0.5414.119 -pkgrel=2 +pkgver=110.0.5481.77 +pkgrel=1 _launcher_ver=8 -_gcc_patchset=1 +_gcc_patchset=4 pkgdesc="A lightweight approach to removing Google web service dependency" arch=('x86_64') url="https://github.com/ungoogled-software/ungoogled-chromium" license=('BSD') depends=('gtk3' 'nss' 'alsa-lib' 'xdg-utils' 'libxss' 'libcups' 'libgcrypt' 'ttf-liberation' 'systemd' 'dbus' 'libpulse' 'pciutils' 'libva' - 'wayland' 'desktop-file-utils' 'hicolor-icon-theme') + 'libffi' 'desktop-file-utils' 'hicolor-icon-theme') makedepends=('python' 'gn' 'ninja' 'clang' 'lld' 'gperf' 'nodejs' 'pipewire' 'qt5-base' 'java-runtime-headless' 'git') optdepends=('pipewire: WebRTC desktop sharing under Wayland' @@ -31,22 +31,20 @@ options=('!lto') # Chromium adds its own flags for ThinLTO source=(https://commondatastorage.googleapis.com/chromium-browser-official/chromium-$pkgver.tar.xz https://github.com/foutrelis/chromium-launcher/archive/v$_launcher_ver/chromium-launcher-$_launcher_ver.tar.gz https://github.com/stha09/chromium-patches/releases/download/chromium-${pkgver%%.*}-patchset-$_gcc_patchset/chromium-${pkgver%%.*}-patchset-$_gcc_patchset.tar.xz - v8-enhance-Date-parser-to-take-Unicode-SPACE.patch fix-the-way-to-handle-codecs-in-the-system-icu.patch + v8-move-the-Stack-object-from-ThreadLocalTop.patch REVERT-roll-src-third_party-ffmpeg-m102.patch REVERT-roll-src-third_party-ffmpeg-m106.patch disable-GlobalMediaControlsCastStartStop.patch - angle-wayland-include-protocol.patch use-oauth2-client-switches-as-default.patch) -sha256sums=('cbcdef5ee71acb53790ded3adef86871812b46e9f208dce8ec3f8ab04958be2d' +sha256sums=('e348ab2dc4311083e729d714a81e95dd9db108ff71437dde451c97ac939881ce' '213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a' - '1ca780a2ad5351f60671a828064392096c8da7b589086ee999f25c9e6e799a7b' - 'b83406a881d66627757d9cbc05e345cbb2bd395a48b6d4c970e5e1cb3f6ed454' + '8c7f93037cc236024cc8be815b2c2bd84f6dc9e32685299e31d4c6c42efde8b7' 'a5d5c532b0b059895bc13aaaa600d21770eab2afa726421b78cb597a78a3c7e3' + '49c3e599366909ddac6a50fa6f9420e01a7c0ffd029a20567a41d741a15ec9f7' '30df59a9e2d95dcb720357ec4a83d9be51e59cc5551365da4c0073e68ccdec44' '4c12d31d020799d31355faa7d1fe2a5a807f7458e7f0c374adf55edb37032152' '7f3b1b22d6a271431c1f9fc92b6eb49c6d80b8b3f868bdee07a6a1a16630a302' - 'cd0d9d2a1d6a522d47c3c0891dabe4ad72eabbebc0fe5642b9e22efa3d5ee572' 'e393174d7695d0bafed69e868c5fbfecf07aa6969f3b64596d0bae8b067e1711') provides=('chromium') @@ -59,7 +57,7 @@ source=(${source[@]} vaapi-add-av1-support.patch remove-main-main10-profile-limit.patch) sha256sums=(${sha256sums[@]} - 'e10fe46f3f4b7058c278ab86c6795cc2b68459bcb7ced5efad3355ab5c2f5de1' + '6620119d0b683b989da771885dd186185cc3b8e37e1b4cf143004f340446cbae' 'e9e8d3a82da818f0a67d4a09be4ecff5680b0534d7f0198befb3654e9fab5b69' 'e742cc5227b6ad6c3e0c2026edd561c6d3151e7bf0afb618578ede181451b307' 'fc810e3c495c77ac60b383a27e48cf6a38b4a95b65dd2984baa297c5df83133c') @@ -77,7 +75,7 @@ declare -gA _system_libs=( [icu]=icu [jsoncpp]=jsoncpp [libaom]=aom - [libavif]=libavif + #[libavif]=libavif # https://github.com/AOMediaCodec/libavif/commit/4d2776a3 [libdrm]= [libjpeg]=libjpeg [libpng]=libpng @@ -124,9 +122,13 @@ prepare() { patch -Np1 -i ../use-oauth2-client-switches-as-default.patch # Upstream fixes - patch -Np1 -d v8 <../v8-enhance-Date-parser-to-take-Unicode-SPACE.patch patch -Np1 -i ../fix-the-way-to-handle-codecs-in-the-system-icu.patch + # https://crbug.com/v8/13630 + # https://crrev.com/c/4200636 + # https://github.com/nodejs/node/pull/46125#issuecomment-1407721276 + patch -Np1 -d v8 <../v8-move-the-Stack-object-from-ThreadLocalTop.patch + # Revert ffmpeg roll requiring new channel layout API support # https://crbug.com/1325301 patch -Rp1 -i ../REVERT-roll-src-third_party-ffmpeg-m102.patch @@ -137,11 +139,11 @@ prepare() { # https://crbug.com/1314342 patch -Np1 -i ../disable-GlobalMediaControlsCastStartStop.patch - # https://crbug.com/angleproject/7582 - patch -Np0 -i ../angle-wayland-include-protocol.patch - # Fixes for building with libstdc++ instead of libc++ patch -Np1 -i ../patches/chromium-103-VirtualCursor-std-layout.patch + patch -Np1 -i ../patches/chromium-110-NativeThemeBase-fabs.patch + patch -Np1 -i ../patches/chromium-110-CredentialUIEntry-const.patch + patch -Np1 -i ../patches/chromium-110-DarkModeLABColorSpace-pow.patch # Custom Patches patch -Np1 -i ../ozone-add-va-api-support-to-wayland.patch @@ -209,8 +211,7 @@ build() { 'use_custom_libcxx=false' 'use_gnome_keyring=false' 'use_sysroot=false' - 'use_system_libwayland=true' - 'use_system_wayland_scanner=true' + 'use_system_libffi=true' 'enable_hangout_services_extension=true' 'enable_widevine=true' 'enable_nacl=false' diff --git a/angle-wayland-include-protocol.patch b/angle-wayland-include-protocol.patch deleted file mode 100644 index 1245b17..0000000 --- a/angle-wayland-include-protocol.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -upr third_party/angle.orig/BUILD.gn third_party/angle/BUILD.gn ---- third_party/angle.orig/BUILD.gn 2022-08-17 19:38:11.000000000 +0000 -+++ third_party/angle/BUILD.gn 2022-08-18 11:04:09.061751111 +0000 -@@ -489,6 +489,12 @@ config("angle_vulkan_wayland_config") { - if (angle_enable_vulkan && angle_use_wayland && - defined(vulkan_wayland_include_dirs)) { - include_dirs = vulkan_wayland_include_dirs -+ } else if (angle_enable_vulkan && angle_use_wayland) { -+ include_dirs = [ -+ "$wayland_gn_dir/src/src", -+ "$wayland_gn_dir/include/src", -+ "$wayland_gn_dir/include/protocol", -+ ] - } - } - -@@ -1073,6 +1079,7 @@ if (angle_use_wayland) { - include_dirs = [ - "$wayland_dir/egl", - "$wayland_dir/src", -+ "$wayland_gn_dir/include/protocol", - ] - } - -diff -upr third_party/angle.orig/src/third_party/volk/BUILD.gn third_party/angle/src/third_party/volk/BUILD.gn ---- third_party/angle.orig/src/third_party/volk/BUILD.gn 2022-08-17 19:38:12.000000000 +0000 -+++ third_party/angle/src/third_party/volk/BUILD.gn 2022-08-18 11:04:36.499828006 +0000 -@@ -21,6 +21,9 @@ source_set("volk") { - configs += [ "$angle_root:angle_no_cfi_icall" ] - public_deps = [ "$angle_vulkan_headers_dir:vulkan_headers" ] - if (angle_use_wayland) { -- include_dirs = [ "$wayland_dir/src" ] -+ include_dirs = [ -+ "$wayland_dir/src", -+ "$wayland_gn_dir/include/protocol", -+ ] - } - } diff --git a/v8-enhance-Date-parser-to-take-Unicode-SPACE.patch b/v8-enhance-Date-parser-to-take-Unicode-SPACE.patch deleted file mode 100644 index 7458834..0000000 --- a/v8-enhance-Date-parser-to-take-Unicode-SPACE.patch +++ /dev/null @@ -1,58 +0,0 @@ -From 81dd64c3705f89653859a5d0001dd0ca983a92e2 Mon Sep 17 00:00:00 2001 -From: Frank Tang <ftang@chromium.org> -Date: Wed, 16 Nov 2022 09:18:45 -0800 -Subject: [PATCH] [intl] Enhance Date parser to take Unicode SPACE - -This is needed to prepare for the landing of ICU72. -Allow U+202F in the Date String, which the toLocaleString("en-US") -will generate w/ ICU72. - -Bug: v8:13494 -Change-Id: I41b83c4094ce3d0737a72dcd6310b52c68fdcdca -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4027341 -Reviewed-by: Yang Guo <yangguo@chromium.org> -Reviewed-by: Jungshik Shin <jshin@chromium.org> -Commit-Queue: Frank Tang <ftang@chromium.org> -Cr-Commit-Position: refs/heads/main@{#84308} - -(cherry picked from commit 2ada52cffbff11074abfaac18938bf02d85454f5) ---- - src/date/dateparser-inl.h | 2 +- - src/date/dateparser.h | 4 +++- - 2 files changed, 4 insertions(+), 2 deletions(-) - -diff --git a/src/date/dateparser-inl.h b/src/date/dateparser-inl.h -index 623986d2b1..b45479dc51 100644 ---- a/src/date/dateparser-inl.h -+++ b/src/date/dateparser-inl.h -@@ -192,7 +192,7 @@ DateParser::DateToken DateParser::DateStringTokenizer<CharType>::Scan() { - if (in_->Skip('+')) return DateToken::Symbol('+'); - if (in_->Skip('.')) return DateToken::Symbol('.'); - if (in_->Skip(')')) return DateToken::Symbol(')'); -- if (in_->IsAsciiAlphaOrAbove()) { -+ if (in_->IsAsciiAlphaOrAbove() && !in_->IsWhiteSpaceChar()) { - DCHECK_EQ(KeywordTable::kPrefixLength, 3); - uint32_t buffer[3] = {0, 0, 0}; - int length = in_->ReadWord(buffer, 3); -diff --git a/src/date/dateparser.h b/src/date/dateparser.h -index 1a0a0b15ab..59b2f3c9fd 100644 ---- a/src/date/dateparser.h -+++ b/src/date/dateparser.h -@@ -91,7 +91,8 @@ class DateParser : public AllStatic { - // Return word length. - int ReadWord(uint32_t* prefix, int prefix_size) { - int len; -- for (len = 0; IsAsciiAlphaOrAbove(); Next(), len++) { -+ for (len = 0; IsAsciiAlphaOrAbove() && !IsWhiteSpaceChar(); -+ Next(), len++) { - if (len < prefix_size) prefix[len] = AsciiAlphaToLower(ch_); - } - for (int i = len; i < prefix_size; i++) prefix[i] = 0; -@@ -115,6 +116,7 @@ class DateParser : public AllStatic { - bool IsEnd() const { return ch_ == 0; } - bool IsAsciiDigit() const { return IsDecimalDigit(ch_); } - bool IsAsciiAlphaOrAbove() const { return ch_ >= 'A'; } -+ bool IsWhiteSpaceChar() const { return IsWhiteSpace(ch_); } - bool IsAsciiSign() const { return ch_ == '+' || ch_ == '-'; } - - // Return 1 for '+' and -1 for '-'. diff --git a/v8-move-the-Stack-object-from-ThreadLocalTop.patch b/v8-move-the-Stack-object-from-ThreadLocalTop.patch new file mode 100644 index 0000000..a060448 --- /dev/null +++ b/v8-move-the-Stack-object-from-ThreadLocalTop.patch @@ -0,0 +1,205 @@ +From 7b6fbcd0a6700db498ad55db046ecda92c8ee8c1 Mon Sep 17 00:00:00 2001 +From: Nikolaos Papaspyrou <nikolaos@chromium.org> +Date: Sun, 29 Jan 2023 17:18:08 +0100 +Subject: [PATCH] Merge: [heap] Move the Stack object from ThreadLocalTop to + Isolate + +This is just for nodejs, do not backmerge to 11.0. +(cherry picked from commit 1e4b71d99fea5ea6bb4bf6420585a7819872bb0f) + +> Change-Id: I026a35af3bc6999a09b21f277756d4454c086343 +> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/4152476 +> Reviewed-by: Michael Lippautz <mlippautz@chromium.org> +> Reviewed-by: Omer Katz <omerkatz@chromium.org> +> Commit-Queue: Nikolaos Papaspyrou <nikolaos@chromium.org> +> Cr-Commit-Position: refs/heads/main@{#85445} + +Stack information is thread-specific and, until now, it was stored in a +field in ThreadLocalTop. This CL moves stack information to the isolate +and makes sure to update the stack start whenever a main thread enters +the isolate. At the same time, the Stack object is refactored and +simplified. + +As a side effect, after removing the Stack object, ThreadLocalTop +satisfies the std::standard_layout trait; this fixes some issues +observed with different C++ compilers. + +Bug: v8:13630 +Bug: v8:13257 +Change-Id: I4be1f04fe90699e1a6e456dad3e0dd623851acce +--- + src/execution/isolate.cc | 36 +++++++++++++++---------------- + src/execution/isolate.h | 6 ++++++ + src/execution/thread-local-top.cc | 2 -- + src/execution/thread-local-top.h | 6 +----- + src/heap/heap.cc | 4 +--- + 5 files changed, 25 insertions(+), 29 deletions(-) + +diff --git a/src/execution/isolate.cc b/src/execution/isolate.cc +index 4edf364e0a..be4fd400d2 100644 +--- a/src/execution/isolate.cc ++++ b/src/execution/isolate.cc +@@ -3074,22 +3074,23 @@ void Isolate::AddSharedWasmMemory(Handle<WasmMemoryObject> memory_object) { + void Isolate::RecordStackSwitchForScanning() { + Object current = root(RootIndex::kActiveContinuation); + DCHECK(!current.IsUndefined()); +- thread_local_top()->stack_.ClearStackSegments(); +- wasm::StackMemory* stack = Managed<wasm::StackMemory>::cast( +- WasmContinuationObject::cast(current).stack()) +- .get() +- .get(); ++ stack().ClearStackSegments(); ++ wasm::StackMemory* wasm_stack = ++ Managed<wasm::StackMemory>::cast( ++ WasmContinuationObject::cast(current).stack()) ++ .get() ++ .get(); + current = WasmContinuationObject::cast(current).parent(); +- thread_local_top()->stack_.SetStackStart( +- reinterpret_cast<void*>(stack->base())); ++ heap()->SetStackStart(reinterpret_cast<void*>(wasm_stack->base())); + // We don't need to add all inactive stacks. Only the ones in the active chain + // may contain cpp heap pointers. + while (!current.IsUndefined()) { + auto cont = WasmContinuationObject::cast(current); +- auto* stack = Managed<wasm::StackMemory>::cast(cont.stack()).get().get(); +- thread_local_top()->stack_.AddStackSegment( +- reinterpret_cast<const void*>(stack->base()), +- reinterpret_cast<const void*>(stack->jmpbuf()->sp)); ++ auto* wasm_stack = ++ Managed<wasm::StackMemory>::cast(cont.stack()).get().get(); ++ stack().AddStackSegment( ++ reinterpret_cast<const void*>(wasm_stack->base()), ++ reinterpret_cast<const void*>(wasm_stack->jmpbuf()->sp)); + current = cont.parent(); + } + } +@@ -3377,20 +3378,13 @@ void Isolate::Delete(Isolate* isolate) { + Isolate* saved_isolate = isolate->TryGetCurrent(); + SetIsolateThreadLocals(isolate, nullptr); + isolate->set_thread_id(ThreadId::Current()); +- isolate->thread_local_top()->stack_ = +- saved_isolate ? std::move(saved_isolate->thread_local_top()->stack_) +- : ::heap::base::Stack(base::Stack::GetStackStart()); ++ isolate->heap()->SetStackStart(base::Stack::GetStackStart()); + + bool owns_shared_isolate = isolate->owns_shared_isolate_; + Isolate* maybe_shared_isolate = isolate->shared_isolate_; + + isolate->Deinit(); + +- // Restore the saved isolate's stack. +- if (saved_isolate) +- saved_isolate->thread_local_top()->stack_ = +- std::move(isolate->thread_local_top()->stack_); +- + #ifdef DEBUG + non_disposed_isolates_--; + #endif // DEBUG +@@ -4647,6 +4641,10 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data, + void Isolate::Enter() { + Isolate* current_isolate = nullptr; + PerIsolateThreadData* current_data = CurrentPerIsolateThreadData(); ++ ++ // Set the stack start for the main thread that enters the isolate. ++ heap()->SetStackStart(base::Stack::GetStackStart()); ++ + if (current_data != nullptr) { + current_isolate = current_data->isolate_; + DCHECK_NOT_NULL(current_isolate); +diff --git a/src/execution/isolate.h b/src/execution/isolate.h +index a32f999fe5..1cb6e10661 100644 +--- a/src/execution/isolate.h ++++ b/src/execution/isolate.h +@@ -32,6 +32,7 @@ + #include "src/execution/stack-guard.h" + #include "src/handles/handles.h" + #include "src/handles/traced-handles.h" ++#include "src/heap/base/stack.h" + #include "src/heap/factory.h" + #include "src/heap/heap.h" + #include "src/heap/read-only-heap.h" +@@ -2022,6 +2023,8 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory { + SimulatorData* simulator_data() { return simulator_data_; } + #endif + ++ ::heap::base::Stack& stack() { return stack_; } ++ + #ifdef V8_ENABLE_WEBASSEMBLY + wasm::StackMemory*& wasm_stacks() { return wasm_stacks_; } + // Update the thread local's Stack object so that it is aware of the new stack +@@ -2520,6 +2523,9 @@ class V8_EXPORT_PRIVATE Isolate final : private HiddenFactory { + // The mutex only guards adding pages, the retrieval is signal safe. + base::Mutex code_pages_mutex_; + ++ // Stack information for the main thread. ++ ::heap::base::Stack stack_; ++ + #ifdef V8_ENABLE_WEBASSEMBLY + wasm::StackMemory* wasm_stacks_; + #endif +diff --git a/src/execution/thread-local-top.cc b/src/execution/thread-local-top.cc +index 0d7071ddda..05cc20b8e4 100644 +--- a/src/execution/thread-local-top.cc ++++ b/src/execution/thread-local-top.cc +@@ -37,14 +37,12 @@ void ThreadLocalTop::Clear() { + current_embedder_state_ = nullptr; + failed_access_check_callback_ = nullptr; + thread_in_wasm_flag_address_ = kNullAddress; +- stack_ = ::heap::base::Stack(); + } + + void ThreadLocalTop::Initialize(Isolate* isolate) { + Clear(); + isolate_ = isolate; + thread_id_ = ThreadId::Current(); +- stack_.SetStackStart(base::Stack::GetStackStart()); + #if V8_ENABLE_WEBASSEMBLY + thread_in_wasm_flag_address_ = reinterpret_cast<Address>( + trap_handler::GetThreadInWasmThreadLocalAddress()); +diff --git a/src/execution/thread-local-top.h b/src/execution/thread-local-top.h +index 43fec0a7df..989c817f31 100644 +--- a/src/execution/thread-local-top.h ++++ b/src/execution/thread-local-top.h +@@ -10,7 +10,6 @@ + #include "include/v8-unwinder.h" + #include "src/common/globals.h" + #include "src/execution/thread-id.h" +-#include "src/heap/base/stack.h" + #include "src/objects/contexts.h" + #include "src/utils/utils.h" + +@@ -30,7 +29,7 @@ class ThreadLocalTop { + // TODO(all): This is not particularly beautiful. We should probably + // refactor this to really consist of just Addresses and 32-bit + // integer fields. +- static constexpr uint32_t kSizeInBytes = 30 * kSystemPointerSize; ++ static constexpr uint32_t kSizeInBytes = 25 * kSystemPointerSize; + + // Does early low-level initialization that does not depend on the + // isolate being present. +@@ -147,9 +146,6 @@ class ThreadLocalTop { + + // Address of the thread-local "thread in wasm" flag. + Address thread_in_wasm_flag_address_; +- +- // Stack information. +- ::heap::base::Stack stack_; + }; + + } // namespace internal +diff --git a/src/heap/heap.cc b/src/heap/heap.cc +index 51a90ddcab..b5722ab6ec 100644 +--- a/src/heap/heap.cc ++++ b/src/heap/heap.cc +@@ -5851,9 +5851,7 @@ void Heap::SetStackStart(void* stack_start) { + stack().SetStackStart(stack_start); + } + +-::heap::base::Stack& Heap::stack() { +- return isolate_->thread_local_top()->stack_; +-} ++::heap::base::Stack& Heap::stack() { return isolate_->stack(); } + + void Heap::RegisterExternallyReferencedObject(Address* location) { + Object object = TracedHandles::Mark(location, TracedHandles::MarkMode::kAll); |