Repository navigation
Fix self-host link TypeError on NestedJIT :HashTable refresh (#21888) - #21904
Conversation
Maintainer review (2026-07-21)Unit (host, PR tree):
Link gate: re-running |
Link verify update (PR tip
|
…21888). Route standalone __superglobals__refresh through JitSuperglobalRefreshKernel (same as user-script) and accept VM HashTable ABI in ClassReturnCheck so self-host stubs no longer abort with "HashTable, int returned". Co-authored-by: Cursor <cursoragent@cursor.com>
3c37d74 to
94d47ac
Compare
94d47ac to
53360a3
Compare
Segfault classification (pre-existing / unblocked by #21888)Reproduced on rebased tip
Conclusion: M3EmitTu SEGV is not introduced by retiring the NestedJIT refresh bridge. ClassReturnCheck HashTable ABI accept alone clears Follow-up: #21925 Unit (Docker): ClassReturnCheckHashTable / SuperglobalRefresh* shrink+standalone / SuperglobalRefreshJitHelper — green. Merging for #21888 TypeError fix; link completion tracked on #21925. |
53360a3 to
818fe2f
Compare
Summary
__superglobals__refreshthroughJitSuperglobalRefreshKernel(same path as user-script AOT) instead of NestedJITSuperglobalRefreshJitHelper— self-host stubs made: HashTablereturns abort withHashTable, int returned(Gen-1+ #1492: bootstrap-selfhost-link Zend gen-0 — SuperglobalRefreshJitHelper::buildGetTable returns int not HashTable #21888 / peer php-in-php: drop isThinStandaloneAotMain kernel from StringHashAlgos/HmacAlgos — always JitVmHelperLink + HashAlgosJitHelper (re-#20050) #20652).ClassReturnCheckto accept the VMHashTable/__hashtable__*NestedJIT ABI so legitimate hashtable returns are not treated as scalar class mismatches.SuperglobalRefreshRuntime.php(net shrink).Closes #21888
Follow-up: Zend gen-0 still SIGSEGVs later at
M3EmitTuTrivialEchoAot.php— classified pre-existing (#21925).php-src reference
PHP implementation
lib/JIT/Builtin/SuperglobalRefreshRuntime.php— always kernel for standalonelib/JIT/ClassReturnCheck.php—isVmHashTableClass/enforceVmHashTableReturnlib/Web/Superglobals.php+SuperglobalRefreshJitHelperunit testsC runtime
runtime/*.c. Removed NestedJIT bridge call sites (net PHP LOC ↓ ~100 inSuperglobalRefreshRuntime.php).Test plan / verification
vendor/bin/phpunit test/unit/ClassReturnCheckHashTableTest.php(+ shrink/helper/standalone)BOOTSTRAP_GEN0_ZEND_ONLY=1 make bootstrap-selfhost-link— nobuildGetTable(): … int returned