summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJustKidding <jk@vin.ovh>2023-02-09 15:25:50 -0500
committerJustKidding <jk@vin.ovh>2023-02-09 15:25:50 -0500
commit511cd44d37d92271b4ff542883e5434a390cdd61 (patch)
tree82298912491ed7a6295ef777e38a29b0eae31c7b
parent1be77f627909176b0328871a5c4197b8ae56e8c3 (diff)
downloadungoogled-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--.SRCINFO25
-rw-r--r--PKGBUILD37
-rw-r--r--angle-wayland-include-protocol.patch38
-rw-r--r--v8-enhance-Date-parser-to-take-Unicode-SPACE.patch58
-rw-r--r--v8-move-the-Stack-object-from-ThreadLocalTop.patch205
5 files changed, 235 insertions, 128 deletions
diff --git a/.SRCINFO b/.SRCINFO
index d36b488..73960b3 100644
--- a/.SRCINFO
+++ b/.SRCINFO
@@ -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
diff --git a/PKGBUILD b/PKGBUILD
index 122d933..28b4ff8 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -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);