Skip to content

Bug 2003511 - Cancel loading bookmarks if weve navigated from the BookmarksFragment#23

Closed
boek wants to merge 1 commit into
mozilla-firefox:autolandfrom
boek:bookmarks-improvements
Closed

Bug 2003511 - Cancel loading bookmarks if weve navigated from the BookmarksFragment#23
boek wants to merge 1 commit into
mozilla-firefox:autolandfrom
boek:bookmarks-improvements

Conversation

@boek

@boek boek commented Jan 14, 2026

Copy link
Copy Markdown
Contributor

I also moved the initial folder state to the BookmarksState instead of loading it directly in the middleware. Without the change it prevented us from navigating back on long loads.

@github-actions

Copy link
Copy Markdown
Contributor

View this pull request in Lando to land it once approved.

@MatthewTighe MatthewTighe left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer to use a resolved string resource in place of the string literal you've added to the State default, but not strongly enough to block on it. LGTM otherwise

@boek boek force-pushed the bookmarks-improvements branch from 86cc5ea to 25f5092 Compare January 20, 2026 23:02
lando-worker Bot pushed a commit that referenced this pull request Jan 20, 2026
…kmarksFragment r=matt-tighe

I also moved the initial folder state to the BookmarksState instead of loading it directly in the middleware. Without the change it prevented us from navigating back on long loads.

Pull request: #23
@lando-worker

lando-worker Bot commented Jan 20, 2026

Copy link
Copy Markdown

Pull request closed by commit 4048b3e

@lando-worker lando-worker Bot closed this Jan 20, 2026
akliuxingyuan pushed a commit to akliuxingyuan/firefox-android that referenced this pull request Mar 24, 2026
…kmarksFragment r=matt-tighe

I also moved the initial folder state to the BookmarksState instead of loading it directly in the middleware. Without the change it prevented us from navigating back on long loads.

Pull request: mozilla-firefox/firefox#23
runlevel5 added a commit to runlevel5/firefox-ppc64 that referenced this pull request Apr 30, 2026
The previous clampDoubleToUint8 had two mispredictable branches (≤0/NaN
and ≥255), each with a small body that jumped to a shared exit. Hot
on Uint8ClampedArray store paths.

POWER9 added xsmaxjdp/xsminjdp which use Java/JS semantics (ISA v3.0B
§7.6.1.7): any NaN is treated as "less than any number that is not a
NaN". So xsmaxjdp(input, 0) collapses {NaN, -Inf, ≤ 0} all to 0 in a
single instruction — the entire "≤ 0 or NaN → 0" branch dance
disappears.

After the max, fctid (round-to-nearest-even per FPSCR default —
matches ECMA Uint8ClampedArray's round-half-to-even) saturates
out-of-int64 values to INT64_MAX. The remaining upper clamp
(output > 255 → 255) is one cmpdi + isel.

POWER9 path (7 insns, no branches):
  zeroDouble  fpscratch
  xsmaxjdp    fpscratch, input, fpscratch  ; max(input, 0); NaN→0
  fctid       fpscratch, fpscratch
  mfvsrd      output, fpscratch
  li          max255, 255
  cmpdi       output, 255
  isel        output, max255, output, GreaterThan

POWER8 path: unchanged (xsmaxjdp unavailable; fctid maps NaN to
INT64_MAX which would clamp to 255 instead of the spec-required 0,
so we keep the explicit NaN-filtering branches).

Verified end-to-end:
- Real P9 jit-test --jitflags=none: 13715 PASS / 0 FAIL (default)
- Real P9 jit-test --jitflags=none MOZ_PPC64_FORCE_POWER8=1: 13715 / 0
- Real P9 jstests default: PASS
- Real P9 jstests MOZ_PPC64_FORCE_POWER8=1: PASS
- Sim MOZ_PPC64_FORCE_POWER9=1 jit-test: 13651 / 0
- Sim MOZ_PPC64_FORCE_POWER10=1 jit-test: 13651 / 0
- Sim MOZ_PPC64_FORCE_POWER8=1 jit-test: 13651 / 0

PLAN.md item mozilla-firefox#23 (POWER9 fast path; POWER8 fallback unchanged).
runlevel5 added a commit to runlevel5/firefox-ppc64 that referenced this pull request May 11, 2026
…identify V0 cross-call state

Three more probes:

  mozilla-firefox#22  probe mozilla-firefox#20 + signal-handler dump disabled: 4/10 = 40% (= mozilla-firefox#20 noise).
       Rules out the lc1 stderr dump as the corruption source.

  mozilla-firefox#23  probe mozilla-firefox#20 + constant-pool patcher (PatchConstantPoolLoad P8 fallback
       routed through V0 scratch): 4/10 = 40% (= mozilla-firefox#20 noise). Rules out the
       constant-pool load path as the residual source.

  mozilla-firefox#24  globalized probe mozilla-firefox#20 pattern: loadUnalignedSimd128 P8 fallback
       rewritten to lxvd2x V0; xxpermdi V0; stxvd2x V0; lvx dest. Result:
       10/10 with 16-23 OOBs per iter (200 total) -- DRASTICALLY WORSE.
       V0 (= ScratchSimd128Reg) is in active cross-call use by the wasm
       Ion caller; clobbering it inside loadUnalignedSimd128 breaks 1000s
       of valid runs.

Probe mozilla-firefox#24 forces the conclusion that the bug is upstream of any single
helper: the wasm Ion register allocator is using V0 as both a persistent
vperm-control register (for the matrix-loop shuffle constant) AND as a
re-usable scratch for downstream helpers. Probe mozilla-firefox#20 works at 30%
specifically because the truncSatFloat32x4ToInt32x4 callers happen to
not depend on V0's prior contents; generalizing the pattern to
loadUnalignedSimd128 doesn't survive that constraint.

Real fix paths (next session):
  (a) reserve a dedicated VR for the wasm-loop vperm-control instead of
      sharing V0 with helpers' ScratchSimd128Scope, or
  (b) audit every helper's V0 use and round-trip the prior contents.

Source state: probe mozilla-firefox#20 trunc_sat retained as the best-known partial
fix (~20-50% REPRO range over multiple runs); all other patches
reverted to clean baseline.
lando-worker Bot pushed a commit that referenced this pull request Jun 3, 2026
This is almost certainly unused.  Bug 1380701 comment #23 mentioned
PulseAudio in content processes, which is no longer supported.  (If
you flip `media.cubeb.sandbox` for testing, you'll need to turn off
sandboxing; you should not flip that pref for production use.)

In general there are very few places left where sandboxed processes can
create files, and none of them should need symlinks.  However, there
might be libraries which were calling symlink and silently failing.

Given all of that, this patch does not return symlink/symlinkat to being
unexpected syscalls (crash on Nightly, ENOSYS otherwise) but instead just
makes them quietly fail with EPERM.  (This happens to match macOS, it's a
reasonable error code, and tests can distinguish it from the EACCES of a
broker rejection.)

Differential Revision: https://phabricator.services.mozilla.com/D301463
lando-worker Bot pushed a commit that referenced this pull request Jun 4, 2026
This is almost certainly unused.  Bug 1380701 comment #23 mentioned
PulseAudio in content processes, which is no longer supported.  (If
you flip `media.cubeb.sandbox` for testing, you'll need to turn off
sandboxing; you should not flip that pref for production use.)

In general there are very few places left where sandboxed processes can
create files, and none of them should need symlinks.  However, there
might be libraries which were calling symlink and silently failing.

Given all of that, this patch does not return symlink/symlinkat to being
unexpected syscalls (crash on Nightly, ENOSYS otherwise) but instead just
makes them quietly fail with EPERM.  (This happens to match macOS, it's a
reasonable error code, and tests can distinguish it from the EACCES of a
broker rejection.)

Original Revision: https://phabricator.services.mozilla.com/D301463

Differential Revision: https://phabricator.services.mozilla.com/D304637
lando-worker Bot pushed a commit that referenced this pull request Jun 4, 2026
This is almost certainly unused.  Bug 1380701 comment #23 mentioned
PulseAudio in content processes, which is no longer supported.  (If
you flip `media.cubeb.sandbox` for testing, you'll need to turn off
sandboxing; you should not flip that pref for production use.)

In general there are very few places left where sandboxed processes can
create files, and none of them should need symlinks.  However, there
might be libraries which were calling symlink and silently failing.

Given all of that, this patch does not return symlink/symlinkat to being
unexpected syscalls (crash on Nightly, ENOSYS otherwise) but instead just
makes them quietly fail with EPERM.  (This happens to match macOS, it's a
reasonable error code, and tests can distinguish it from the EACCES of a
broker rejection.)

Original Revision: https://phabricator.services.mozilla.com/D301463

Differential Revision: https://phabricator.services.mozilla.com/D304650
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants