Files
AnyPS5/docs/dev/debt/libSceJsc.md
T
Dean Galvin 0a87d9a0a9 Merge main into salvage/jsc-9438: keep main's JSString implementation, append the stubs
Main now implements ten JSString functions in libSceJsc/Export.cpp and has its
own debt file. Take main's files and append the 150 import-resolution stubs
of this PR after them, with their debt entry; none of their NIDs is defined on
main.
2026-10-27 22:39:07 +13:00

2.1 KiB

libSceJsc technical debt

Unknown function info

  • JSString ABI and ownership: the console JavaScriptCore version, allocation policy, opaque object layout and thread initialization remain unverified. These host objects cannot be passed to a title-supplied native JavaScriptCore module. The ten names occur in the PS5 3.20 inventory; ownership and signatures follow pinned WebKit JSStringRef.cpp. Null retain/release or maximum-size handles, nonempty null UTF-16 buffers, counts above INT32_MAX and reference-count exhaustion throw. The allocation-header-dependent limit below INT32_MAX is not reproduced. Other JavaScriptCore APIs remain unavailable.

Functional

  • JSString conversion: console behavior is unverified. UTF-16 storage, null/empty distinction and partial UTF-8 output follow pinned WebKit OpaqueJSString.cpp and UTF8Conversion.cpp. Malformed UTF-8 creates a null string, distinct from an empty string; output stops before an unpaired UTF-16 surrogate. Null UTF-8 inputs and unrepresentable maximum output sizes throw.

Known export names; ABI prototypes unverified

  • The 150 sceJscUnknown_*_nid_no_patch exports in Export.cpp are present in the PS5 3.20 libSceJsc export inventory from PS5-3.20_Libs. Their NIDs are derived from exported mangled symbols. Prototypes and behavior are unverified; each uses the no-parameter import-resolution convention and throws through NotImplemented_nid_no_patch. These declarations make no ABI or behavior claim.