summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorNoah Vogt2023-02-23 15:33:21 +0100
committerNoah Vogt2023-02-23 15:33:21 +0100
commitcf853384b124510f91a44a01cabd7b7c20df4ef6 (patch)
tree2698b74b2561f64b7cadc8541d54ac537259b922
parente5d928ea08a776425f34dcde729879965e2ac79c (diff)
downloadaur-cf853384b124510f91a44a01cabd7b7c20df4ef6.tar.gz
uppkg -> 110.0.5481.100-1
-rw-r--r--PKGBUILD102
-rw-r--r--fix-the-way-to-handle-codecs-in-the-system-icu.patch60
-rw-r--r--v8-move-the-Stack-object-from-ThreadLocalTop.patch205
3 files changed, 330 insertions, 37 deletions
diff --git a/PKGBUILD b/PKGBUILD
index dd4821de09d3..f7484bcec86d 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -10,10 +10,11 @@
# Contributor: Daniel J Griffiths <ghost1227@archlinux.us>
pkgname=ungoogled-chromium-xdg
-pkgver=108.0.5359.124
+pkgver=110.0.5481.100
pkgrel=1
_launcher_ver=8
_gcc_patchset=2
+_manual_clone=0
pkgdesc="A lightweight approach to removing Google web service dependency - without creating a useless ~/.pki directory"
arch=('x86_64')
url="https://github.com/ungoogled-software/ungoogled-chromium"
@@ -28,13 +29,12 @@ optdepends=('pipewire: WebRTC desktop sharing under Wayland'
'qt5-base: enable Qt5 with --enable-features=AllowQt'
'org.freedesktop.secrets: password storage backend on GNOME / Xfce'
'kwallet: support for storing passwords in KWallet on Plasma')
-options=('debug' '!lto') # Chromium adds its own flags for ThinLTO
+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
- re-fix-TFLite-build-error-on-linux-with-system-zlib.patch
- chromium-icu72.patch
- 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
@@ -43,12 +43,11 @@ source=(https://commondatastorage.googleapis.com/chromium-browser-official/chrom
xdg-basedir.patch
no-omnibox-suggestion-autocomplete.patch
index.html)
-sha256sums=('d48dfac2a61b14a5d7d2f460b09b70ef3ab88e27b82e3173938cb54eaa612a75'
+sha256sums=('6d870d690c1f2c41a288011b0149752681077f1459ebe7a4f9215dbfde21f633'
'213e50f48b67feb4441078d50b0fd431df34323be15be97c55302d3fdac4483a'
- '40ef8af65e78901bb8554eddbbb5ebc55c0b8e7927f6ca51b2a353d1c7c50652'
- '9015b9d6d5b4c1e7248d6477a4b4b6bd6a3ebdc57225d2d8efcd79fc61790716'
- 'dabb5ab204b63be73d3c5c8b7c1fa74053105a285852ba3bbc4fb77646608572'
- 'b83406a881d66627757d9cbc05e345cbb2bd395a48b6d4c970e5e1cb3f6ed454'
+ '8c7f93037cc236024cc8be815b2c2bd84f6dc9e32685299e31d4c6c42efde8b7'
+ 'a5d5c532b0b059895bc13aaaa600d21770eab2afa726421b78cb597a78a3c7e3'
+ '49c3e599366909ddac6a50fa6f9420e01a7c0ffd029a20567a41d741a15ec9f7'
'30df59a9e2d95dcb720357ec4a83d9be51e59cc5551365da4c0073e68ccdec44'
'4c12d31d020799d31355faa7d1fe2a5a807f7458e7f0c374adf55edb37032152'
'7f3b1b22d6a271431c1f9fc92b6eb49c6d80b8b3f868bdee07a6a1a16630a302'
@@ -57,6 +56,12 @@ sha256sums=('d48dfac2a61b14a5d7d2f460b09b70ef3ab88e27b82e3173938cb54eaa612a75'
'cd844867b5b2197ad097662fee32579a7091dfba1d46cb438c4c7e696690440a'
'ff1591fa38e0ede7e883dc7494b813641b7a1a7cb1ded00d9baaee987c1dbea8'
'a4cdd2b86f32d5302c2792be841ff40d982b19bb58a4e63df9d77f4c706b8665')
+
+if (( _manual_clone )); then
+ source[0]=fetch-chromium-release
+ makedepends+=('python-httplib2' 'python-pyparsing' 'python-six')
+fi
+
provides=('chromium')
conflicts=('chromium')
_uc_usr=ungoogled-software
@@ -64,13 +69,13 @@ _uc_ver=$pkgver-1
source=(${source[@]}
${pkgname%-*}-$_uc_ver.tar.gz::https://github.com/$_uc_usr/ungoogled-chromium/archive/$_uc_ver.tar.gz
ozone-add-va-api-support-to-wayland.patch
- remove-main-main10-profile-limit.patch
- chromium-drirc-disable-10bpc-color-configs.conf)
+ vaapi-add-av1-support.patch
+ remove-main-main10-profile-limit.patch)
sha256sums=(${sha256sums[@]}
- 'ac71aa130e70bcb5b30fc5f899239851b4bff05938cf4fe6d3f8c2da04e85f70'
+ '994a7241ed09e98337832628f145ee21265d81c7c5ed2a5099dfb7e11b01ee18'
'e9e8d3a82da818f0a67d4a09be4ecff5680b0534d7f0198befb3654e9fab5b69'
- 'fc810e3c495c77ac60b383a27e48cf6a38b4a95b65dd2984baa297c5df83133c'
- 'babda4f5c1179825797496898d77334ac067149cac03d797ab27ac69671a7feb')
+ 'e742cc5227b6ad6c3e0c2026edd561c6d3151e7bf0afb618578ede181451b307'
+ 'fc810e3c495c77ac60b383a27e48cf6a38b4a95b65dd2984baa297c5df83133c')
# Possible replacements are listed in build/linux/unbundle/replace_gn_files.py
# Keys are the names in the above script; values are the dependencies in Arch
@@ -83,10 +88,10 @@ declare -gA _system_libs=(
[freetype]=freetype2
[harfbuzz-ng]=harfbuzz
[icu]=icu
- [libdrm]=
[jsoncpp]=jsoncpp
[libaom]=aom
- [libavif]=libavif
+ #[libavif]=libavif # https://github.com/AOMediaCodec/libavif/commit/4d2776a3
+ [libdrm]=
[libjpeg]=libjpeg
[libpng]=libpng
#[libvpx]=libvpx
@@ -104,7 +109,18 @@ _unwanted_bundled_libs=(
)
depends+=(${_system_libs[@]})
+# Google API keys (see https://www.chromium.org/developers/how-tos/api-keys)
+# Note: These are for Arch Linux use ONLY. For your own distribution, please
+# get your own set of keys.
+#
+# Starting with Chromium 89 (2021-03-02) the OAuth2 credentials have been left
+# out: https://archlinux.org/news/chromium-losing-sync-support-in-early-march/
+_google_api_key=AIzaSyDwr302FpOSkGRpLlUpPThNTDPbXcIn_FM
+
prepare() {
+ if (( _manual_clone )); then
+ ./fetch-chromium-release $pkgver
+ fi
cd "$srcdir/chromium-$pkgver"
# Allow building against system libraries in official builds
@@ -124,9 +140,12 @@ prepare() {
patch -Np1 -i ../use-oauth2-client-switches-as-default.patch
# Upstream fixes
- patch -Np1 -i ../chromium-icu72.patch
- patch -Np1 -d v8 <../v8-enhance-Date-parser-to-take-Unicode-SPACE.patch
- patch -Np1 -i ../re-fix-TFLite-build-error-on-linux-with-system-zlib.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
@@ -138,11 +157,16 @@ 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
+ patch -Np1 -i ../remove-main-main10-profile-limit.patch
+ patch -Np1 -i ../vaapi-add-av1-support.patch
# move ~/.pki directory to ${XDG_DATA_HOME:-$HOME/.local}/share/pki
patch -p1 -i ../xdg-basedir.patch
@@ -152,14 +176,14 @@ prepare() {
# called 'shoulder surfing').
patch -p1 -i ../no-omnibox-suggestion-autocomplete.patch
- # Enable vaapi on wayland
- patch -Np1 -i ../ozone-add-va-api-support-to-wayland.patch
-
# Ungoogled Chromium changes
_ungoogled_repo="$srcdir/${pkgname%xdg*}$_uc_ver"
_utils="${_ungoogled_repo}/utils"
+ msg2 'Pruning binaries'
python "$_utils/prune_binaries.py" ./ "$_ungoogled_repo/pruning.list"
+ msg2 'Applying patches'
python "$_utils/patches.py" apply ./ "$_ungoogled_repo/patches"
+ msg2 'Applying domain substitution'
python "$_utils/domain_substitution.py" apply -r "$_ungoogled_repo/domain_regex.list" \
-f "$_ungoogled_repo/domain_substitution.list" -c domainsubcache.tar.gz ./
@@ -198,10 +222,12 @@ build() {
local _flags=(
'custom_toolchain="//build/toolchain/linux/unbundle:default"'
'host_toolchain="//build/toolchain/linux/unbundle:default"'
+ 'clang_base_path="/usr"'
+ 'clang_use_chrome_plugins=false'
'is_official_build=true' # implies is_cfi=true on x86_64
'symbol_level=0' # sufficient for backtraces on x86(_64)
- 'clang_base_path="/usr"'
- 'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile
+ #'chrome_pgo_phase=0' # needs newer clang to read the bundled PGO profile
+ 'treat_warnings_as_errors=false'
'disable_fieldtrial_testing_config=true'
'blink_enable_generated_code_formatting=false'
'ffmpeg_branding="Chrome"'
@@ -211,18 +237,23 @@ build() {
'use_custom_libcxx=false'
'use_gnome_keyring=false'
'use_sysroot=false'
- 'use_system_libwayland=true'
- 'use_system_wayland_scanner=true'
- 'use_custom_libcxx=false'
+ 'use_system_libffi=true'
+ 'enable_hangout_services_extension=true'
'enable_widevine=true'
- 'enable_platform_hevc=true'
- 'enable_hevc_parser_and_hw_decoder=true'
+ 'enable_nacl=false'
+ "google_api_key=\"$_google_api_key\""
)
if [[ -n ${_system_libs[icu]+set} ]]; then
_flags+=('icu_use_data_file=false')
fi
+ # enable HEVC decoding
+ _flags+=(
+ 'enable_platform_hevc=true'
+ 'enable_hevc_parser_and_hw_decoder=true'
+ )
+
# Append ungoogled chromium flags to _flags array
_ungoogled_repo="$srcdir/${pkgname%xdg*}$_uc_ver"
readarray -t -O ${#_flags[@]} _flags < "${_ungoogled_repo}/flags.gn"
@@ -270,9 +301,6 @@ package() {
install -D out/Release/chromedriver "$pkgdir/usr/bin/chromedriver"
install -Dm4755 out/Release/chrome_sandbox "$pkgdir/usr/lib/chromium/chrome-sandbox"
- install -Dm644 ../chromium-drirc-disable-10bpc-color-configs.conf \
- "$pkgdir/usr/share/drirc.d/10-$pkgname.conf"
-
install -Dm644 chrome/installer/linux/common/desktop.template \
"$pkgdir/usr/share/applications/chromium.desktop"
install -Dm644 chrome/app/resources/manpage.1.in \
@@ -297,8 +325,8 @@ package() {
chrome_100_percent.pak
chrome_200_percent.pak
chrome_crashpad_handler
- resources.pak
libqt5_shim.so
+ resources.pak
v8_context_snapshot.bin
# ANGLE
diff --git a/fix-the-way-to-handle-codecs-in-the-system-icu.patch b/fix-the-way-to-handle-codecs-in-the-system-icu.patch
new file mode 100644
index 000000000000..63c4cee930ea
--- /dev/null
+++ b/fix-the-way-to-handle-codecs-in-the-system-icu.patch
@@ -0,0 +1,60 @@
+From 4885090741554be61cb2ed10194cefb29bf8be64 Mon Sep 17 00:00:00 2001
+From: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
+Date: Wed, 11 Jan 2023 23:51:39 +0000
+Subject: [PATCH] Fix the way to handle codecs in the system icu.
+
+The previous code does not register codecs whose standard name is
+different from the bundled ICU. As a result, looking up such codecs
+seems to fail unexpectedly.
+
+Bug: 1382032
+Change-Id: I8a61f77d0f70104415d24dd954b3b7061ffca556
+Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4154277
+Reviewed-by: Kent Tamura <tkent@chromium.org>
+Commit-Queue: Yoshisato Yanagisawa <yyanagisawa@chromium.org>
+Cr-Commit-Position: refs/heads/main@{#1091571}
+---
+ .../renderer/platform/wtf/text/text_codec_icu.cc | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
+index a70b359984f..33ce43f3563 100644
+--- a/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
++++ b/third_party/blink/renderer/platform/wtf/text/text_codec_icu.cc
+@@ -116,6 +116,10 @@ void TextCodecICU::RegisterEncodingNames(EncodingNameRegistrar registrar) {
+ continue;
+ }
+ #endif
++ // Avoid codecs supported by `TextCodecCJK`.
++ if (is_text_codec_cjk_enabled && TextCodecCJK::IsSupported(standard_name)) {
++ continue;
++ }
+
+ // A number of these aliases are handled in Chrome's copy of ICU, but
+ // Chromium can be compiled with the system ICU.
+@@ -144,12 +148,13 @@ void TextCodecICU::RegisterEncodingNames(EncodingNameRegistrar registrar) {
+ }
+ #endif
+
+- if (is_text_codec_cjk_enabled && TextCodecCJK::IsSupported(standard_name)) {
+- continue;
++ // Avoid registering codecs registered by
++ // `TextCodecCJK::RegisterEncodingNames`.
++ if (!is_text_codec_cjk_enabled ||
++ !TextCodecCJK::IsSupported(standard_name)) {
++ registrar(standard_name, standard_name);
+ }
+
+- registrar(standard_name, standard_name);
+-
+ uint16_t num_aliases = ucnv_countAliases(name, &error);
+ DCHECK(U_SUCCESS(error));
+ if (U_SUCCESS(error))
+@@ -289,6 +294,7 @@ void TextCodecICU::RegisterCodecs(TextCodecRegistrar registrar) {
+ continue;
+ }
+ #endif
++ // Avoid codecs supported by `TextCodecCJK`.
+ if (is_text_codec_cjk_enabled && TextCodecCJK::IsSupported(standard_name)) {
+ continue;
+ }
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 000000000000..a06044834249
--- /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);