Category
bug · php-in-php · Trust / #32122 .1 mint class · ensureFullStandaloneBodies shrink
Problem
Context::ensureFullStandaloneBodies still NestedJITs __compiler_getenv / __compiler_getenv_all after the standalone-init phase (always-helper #20156). Thin hello-world and scripts that never call getenv() pay that NestedJIT during full standalone init — leftover Context NestedJIT vs Runtime ABI drift mints getenv.1 / getenv_all.1 (#31894 / #32122).
Call sites already ensureLinked before lookup:
Peer ensureFull drops: #35113 RandomBytes, #35099 ExceptionBridge, #35089 Utf8/Define/…, #35086 Stream*, #35065 Json/Offset, #35073 Assert/Gc.
php-src reference
PHP implementation target
lib/JIT/Context.php — remove StringGetenv::ensureStandaloneBodies / StringGetenvAll::ensureStandaloneBodies from ensureFullStandaloneBodies
- Document lazy-full on
StringGetenv.php / StringGetenvAll.php
- Guard test peer
#35113 shape
- No new
runtime/*.c
Repro / verify
./script/aot-smoke.sh
./script/phpunit.sh --filter 'ContextFullStandaloneLazyGetenvShrinkTest|TypeDeadGetenvAbiRuntimeShrinkTest|StringGetenvRuntimeStandaloneTest|StringGetenvAllRuntimeStandaloneTest'
./script/docker-exec.sh -- bash -lc 'php bin/compile.php -o /tmp/hw.bin -r "echo \"hi\";" && /tmp/hw.bin'
Done when
Parent
Category
bug· php-in-php · Trust / #32122.1mint class · ensureFullStandaloneBodies shrinkProblem
Context::ensureFullStandaloneBodiesstill NestedJITs__compiler_getenv/__compiler_getenv_allafter the standalone-init phase (always-helper #20156). Thin hello-world and scripts that never callgetenv()pay that NestedJIT during full standalone init — leftover Context NestedJIT vs Runtime ABI drift mintsgetenv.1/getenv_all.1(#31894 / #32122).Call sites already
ensureLinkedbefore lookup:ext/standard/JitEnv.php—StringGetenv::ensureLinked/StringGetenvAll::ensureLinked(php-in-php: drop always-on Type __compiler_getenv / __compiler_getenv_all ABI shells (ext/standard/basic_functions.c) #32665)Peer ensureFull drops: #35113 RandomBytes, #35099 ExceptionBridge, #35089 Utf8/Define/…, #35086 Stream*, #35065 Json/Offset, #35073 Assert/Gc.
php-src reference
ext/standard/basic_functions.c—zif_getenvPHP implementation target
lib/JIT/Context.php— removeStringGetenv::ensureStandaloneBodies/StringGetenvAll::ensureStandaloneBodiesfromensureFullStandaloneBodiesStringGetenv.php/StringGetenvAll.php#35113shaperuntime/*.cRepro / verify
Done when
ensureFullStandaloneBodiesdoes not NestedJIT getenv / getenv_all./script/aot-smoke.shstays 8/8hiParent