Category
php-in-php · runtime-shrink (#1492, re-#16734 / #15533)
Problem
ext/standard/JitRename.php still emits inline libc rename(2) LLVM when UserScriptAotDeferNestedJit::shouldDefer() — embed builds route through RenameJitHelper PHP, but user-script standalone AOT keeps a ~20-line C ABI shortcut. #19186 proved the same JitVmHelperLink::ensureBridge + prelinked helper-runtime pattern works for unlink() without nested-JIT init regressions.
php-src reference
PHP implementation target
lib/JIT/Builtin/StringRename.php — always JitVmHelperLink::ensureBridge (drop defer early-return)
ext/standard/JitRename.php — delete invokeLibc; always StringRename::invoke
test/unit/RenameRuntimeShrinkTest.php — guard no libc defer remains
Repro
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
vendor/bin/phpunit test/unit/RenameRuntimeShrinkTest.php
vendor/bin/phpunit test/unit/RenameBuiltinTest.php --filter testAotNativeBinaryMatchesPhpSubset
'
Done when
Refs #1492, #15533, #16734, #19186
Category
php-in-php· runtime-shrink (#1492, re-#16734 / #15533)Problem
ext/standard/JitRename.phpstill emits inline libcrename(2)LLVM whenUserScriptAotDeferNestedJit::shouldDefer()— embed builds route throughRenameJitHelperPHP, but user-script standalone AOT keeps a ~20-line C ABI shortcut.#19186proved the sameJitVmHelperLink::ensureBridge+ prelinked helper-runtime pattern works forunlink()without nested-JIT init regressions.php-src reference
php_renamePHP implementation target
lib/JIT/Builtin/StringRename.php— alwaysJitVmHelperLink::ensureBridge(drop defer early-return)ext/standard/JitRename.php— deleteinvokeLibc; alwaysStringRename::invoketest/unit/RenameRuntimeShrinkTest.php— guard no libc defer remainsRepro
Done when
invokeLibcdeleted fromJitRename.phpUserScriptAotDeferNestedJitremoved from rename bridge pathRenameBuiltinTestgreenmake bootstrap-selfhost-vm-driver-execute-probegreenRefs #1492, #15533, #16734, #19186