Skip to content

feat(libSceNKWebKit): implement FastBitVector storage operations - #14256

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
StoneDC:feat/nkwebkit-fastbitvector
Nov 2, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
StoneDC:feat/nkwebkit-fastbitvector

Conversation

@StoneDC

@StoneDC StoneDC commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

What

Replaces three throwing libSceNKWebKit inventory declarations with WTF::FastBitVector::clearRange, FastBitVectorWordOwner::resizeSlow and setEqualsSlow. Range clearing preserves every bit outside the requested interval; growth preserves the existing words, zeroes new words and leaves the stored bit count to the inline caller; copying allocates independent storage, including self-copy. All allocation uses the module's existing fastMalloc/fastFree exports.

The 16-byte LP64 layout and behavior follow the paired header and pinned PS5 11.x WebKit mirror. Invalid ranges, accessed null storage, shrinking the word count and overflowing the upstream round-up throw; console ABI and behavior equivalence remain unverified and are recorded in the library debt file.

The debt entry is placed away from other pending additions. Existing inventory prose is explicitly identified as historical, with live totals linked to the generated report, so this change does not compete with other PRs over the shared numeric summary. Only these three entries are removed from the pending table.

Tested

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

@MarcZX10 MarcZX10 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.

Reviewed — looks good

The three implementations match the pinned PS5 WebKit 11.x routines for normal operations, preserve the owner layout, and add checked failures for invalid states and ranges.

What I ran

Reviewed head 584596ed7d747e079a9274b12a13dc4ed36ec086; the PR-recorded base is 5b8211d66b66c2791b1e65f08856ae103fa6ef8d. The local merge preview was clean against current target main ad4854ce62584b3438576786299c88e79d2e8601. Environment: Linux x86_64, Python 3.11.2, GCC 12.2.0. I did not build or run the C++ test locally.

python3 tools/pr_precheck.py --repo boykopovar/AnyPS5 --pr 14256 --output-dir /tmp/anyps5-pr-precheck-14256
git diff --check ad4854ce62584b3438576786299c88e79d2e8601...584596ed7d747e079a9274b12a13dc4ed36ec086
python3 tools/check_conventions.py --base ad4854ce62584b3438576786299c88e79d2e8601 --head 584596ed7d747e079a9274b12a13dc4ed36ec086 --title 'feat(libSceNKWebKit): implement FastBitVector storage operations' --body /tmp/anyps5-pr-precheck-14256/pr-body.md
python3 tools/pr_abi_audit.py --base ad4854ce62584b3438576786299c88e79d2e8601 --head 584596ed7d747e079a9274b12a13dc4ed36ec086 --json > /tmp/anyps5-abi-14256-current.json
python3 -c 'import json; d=json.load(open("/tmp/anyps5-abi-14256-current.json")); print("status={} symbols={} findings={}".format(d["status"], len(d["symbols"]), len(d["findings"])))'
python3 tools/pr_test_quality.py --root /tmp/anyps5-review-14256 core/libs/prx/libSceNKWebKit/tests/FastBitVector.cpp
grep -n 'file(GLOB nkWebKitTests CONFIGURE_DEPENDS' /tmp/anyps5-review-14256/core/libs/prx/libSceNKWebKit/CMakeLists.txt
python3 tools/pr_overlap.py --branch feat/nkwebkit-fastbitvector --repo boykopovar/AnyPS5 --jobs 8
gh pr checks 14256 --repo boykopovar/AnyPS5
curl -fsSL https://raw.githubusercontent.com/neonmodder123/PS5-WebKit-11.x/80f77e94c63ee7202eec3d4b5b1a021dd89011ba/Source/WTF/wtf/FastBitVector.cpp -o /tmp/PS5-FastBitVector.cpp
curl -fsSL https://raw.githubusercontent.com/neonmodder123/PS5-WebKit-11.x/80f77e94c63ee7202eec3d4b5b1a021dd89011ba/Source/WTF/wtf/FastBitVector.h -o /tmp/PS5-FastBitVector.h

Results

Check Result
Diff and conventions Passed against current main ad4854....
Merge preview Clean against ad4854...; no declared dependencies.
ABI audit Passed: 10,109 symbols scanned, 0 findings. This lexical check does not certify console ABI/version behavior.
Test registration The CMake CONFIGURE_DEPENDS glob includes the new tests/FastBitVector.cpp file. The heuristic warning below is a false positive.
Open-PR overlap The full helper failed to parse a GitHub API response. I manually searched exact symbols/NIDs in #13515 and #13992 (no matches); #14212 does not touch this source or debt file. The PR author reports a broader 1,638-PR overlap scan, not independently verified here.
Hosted CI Eligibility, intake, library-portability and report passed. Windows, conventions and labels were pending; Linux and specialized jobs were skipped.
Raw command output

Precheck:

/tmp/anyps5-pr-precheck-14256/report.md
/tmp/anyps5-pr-precheck-14256/report.json
Conclusion: checks failed

The precheck report says diff, conventions and live-stack checks passed. Its ABI and test-quality subprocesses could not run because the custom scripts are workspace-only; I ran them manually as listed above.

Diff check produced no output. Conventions:

All conventions checks passed.

ABI summary:

status=passed symbols=10109 findings=0

Test-quality heuristic:

core/libs/prx/libSceNKWebKit/tests/FastBitVector.cpp:1: possible-unregistered-cpp-test: Changed C++ test source path was not found literally in CMake files; inspect registration, generated source lists, and workflow coverage.
Heuristic findings require manual interpretation.

CMake registration:

49:    file(GLOB nkWebKitTests CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp)

The global overlap helper failed with:

pr_overlap: Invalid \uXXXX escape: line 1 column 1341691 (char 1341690)

Hosted checks:

linux	skipping	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748759000
register-context	skipping	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748758785
relinker	skipping	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748758771
relinker-asan	skipping	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748758797
write-watch	skipping	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748758747
windows	pending	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748757900
eligibility	pass	10s	https://github.com/boykopovar/AnyPS5/actions/runs/41272575016/job/124748188846
intake	pass	3s	https://github.com/boykopovar/AnyPS5/actions/runs/41272574998/job/124748189256
library-portability	pass	1m20s	https://github.com/boykopovar/AnyPS5/actions/runs/41272575065/job/124748189104
report	pass	36s	https://github.com/boykopovar/AnyPS5/actions/runs/41272575026/job/124748188967
conventions	pending	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575020/job/124748190007
labels	pending	0	https://github.com/boykopovar/AnyPS5/actions/runs/41272575005/job/124748189636

Findings

Blocking

None found in the inspected source and tests.

Non-blocking

The PR explicitly leaves console-module ABI equivalence unverified; keep that limitation in the debt record. The author-reported C++ builds, runtime test cases, sanitizers and negative controls were not independently run in this review.

Sources

Not verified

No build, C++ test, sanitizer run, console, macOS or title run was performed locally. The PR's build/test, sanitizers and negative-control results are author-reported. The global overlap scan did not complete; related open PRs were checked manually as stated above. Hosted Windows CI was pending at the last refresh.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown

Progress report (932bb4f → 584596e)

📈 System libraries: 26.01% (+0.01%, +3 implemented functions)

✅ 3 implemented
Library Name
libSceNKWebKit _ZN3WTF13FastBitVector10clearRangeEmm
libSceNKWebKit _ZN3WTF22FastBitVectorWordOwner10resizeSlowEm
libSceNKWebKit _ZN3WTF22FastBitVectorWordOwner13setEqualsSlowERKS0_

Changed libraries (implemented exports)

Library Before After Change
libSceNKWebKit 1151/11248 (10.23%) 1154/11248 (10.26%) +0.03%

@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 14259 core/libs/prx/libSceNKWebKit/libSceNKWebKit.hpp L10

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 13515 core/libs/prx/libSceNKWebKit/Export.cpp
core/libs/prx/libSceNKWebKit/libSceNKWebKit.hpp
docs/dev/debt/libSceNKWebKit.md
PR 14212 docs/dev/debt/libSceNKWebKit.md

@CnRJay CnRJay 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.

Withdrawn. This review applied a title-ID/log requirement that is not in CONTRIBUTING (Unblocks: none is allowed), and it contained no code review.

@oneandonlydean oneandonlydean self-assigned this Nov 2, 2026
@oneandonlydean
oneandonlydean merged commit 76f5ada into boykopovar:main Nov 2, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants