Category
php-in-php · runtime-shrink (#1492, finish #19279 / Unlink pattern #19186)
Problem
lib/JIT/Builtin/StringFileGetContents.php still routes UserScriptAotDeferNestedJit::shouldDefer() through ext/standard/JitFileGetContentsKernel.php (~185 LOC hand-written libc open/read LLVM). Embed already uses FileGetContentsJitHelper → VmFs::fileGetContents().
Committed helper-runtime unit ext_standard_FileGetContentsJitHelper_php already exists with runtime_safe: true — same prelink that made Unlink (#19186) drop its libc defer. Kernel can go.
php-src reference
PHP implementation target
lib/JIT/Builtin/StringFileGetContents.php — always JitVmHelperLink::ensureBridge (drop defer → kernel)
- Delete
ext/standard/JitFileGetContentsKernel.php
- Update
test/unit/FileGetContentsRuntimeShrinkTest.php + spine require list
- SSOT remains
ext/standard/FileGetContentsJitHelper.php → VmFs::fileGetContents()
Repro
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh
vendor/bin/phpunit test/unit/FileGetContentsRuntimeShrinkTest.php
tmpdir=$(mktemp -d); echo hi > "$tmpdir/x"
PHP_COMPILER_AOT_USER_SCRIPT=1 php bin/compile.php -o "$tmpdir/fgc" -r "echo file_get_contents(\"$tmpdir/x\");"
"$tmpdir/fgc"
make bootstrap-selfhost-vm-driver-execute-probe
'
Done when
Refs #1492, #15309, #19186, #19279
Category
php-in-php· runtime-shrink (#1492, finish #19279 / Unlink pattern #19186)Problem
lib/JIT/Builtin/StringFileGetContents.phpstill routesUserScriptAotDeferNestedJit::shouldDefer()throughext/standard/JitFileGetContentsKernel.php(~185 LOC hand-written libcopen/readLLVM). Embed already usesFileGetContentsJitHelper→VmFs::fileGetContents().Committed helper-runtime unit
ext_standard_FileGetContentsJitHelper_phpalready exists withruntime_safe: true— same prelink that made Unlink (#19186) drop its libc defer. Kernel can go.php-src reference
PHP_FUNCTION(file_get_contents)/php_stream_copy_to_memPHP implementation target
lib/JIT/Builtin/StringFileGetContents.php— alwaysJitVmHelperLink::ensureBridge(drop defer → kernel)ext/standard/JitFileGetContentsKernel.phptest/unit/FileGetContentsRuntimeShrinkTest.php+ spine require listext/standard/FileGetContentsJitHelper.php→VmFs::fileGetContents()Repro
Done when
JitFileGetContentsKernel.phpdeletedUserScriptAotDeferNestedJitremoved fromStringFileGetContentsbridge pathfile_get_contentssmoke prints file contentsFileGetContentsRuntimeShrinkTestgreenmake bootstrap-selfhost-vm-driver-execute-probegreenRefs #1492, #15309, #19186, #19279