Category
php-in-php · Trust / #32122-class leftover Type always-on ABI shell
Problem
After #33241 dropped __compiler_assert_fail_string, Builtin\Type still always-on addFunction/registerFunction for __compiler_assert_options. Leftover empty Type decls vs Runtime ABI drift mint assert_options.1 (#31894 / #32122). Sentinel after #33241.
| Path |
Owner today |
__compiler_assert_fail / _string |
AssertFail module-local (#33237 / #33241) |
__compiler_assert_options |
still Type always-on; AssertOptionsRuntime only fills body if Type already declared |
php-src reference
PHP implementation target
lib/JIT/Builtin/AssertOptionsRuntime.php — declare __compiler_assert_options module-locally (getNamedFunction first, then addFunction if absent)
lib/JIT/Builtin/Type.php — remove always-on empty decl; keep AssertOptionsRuntime::ensureLinked
ext/standard/JitAssertOptions.php — ensureLinked before lookup if needed
- No new
runtime/*.c
Repro / gate
./script/phpunit.sh --filter TypeDeadAssertOptionsAbiRuntimeShrinkTest
./script/aot-smoke.sh
Done when
Category
php-in-php· Trust / #32122-class leftover Type always-on ABI shellProblem
After #33241 dropped
__compiler_assert_fail_string,Builtin\Typestill always-onaddFunction/registerFunctionfor__compiler_assert_options. Leftover empty Type decls vs Runtime ABI drift mintassert_options.1(#31894 / #32122). Sentinel after #33241.__compiler_assert_fail/_stringAssertFailmodule-local (#33237 / #33241)__compiler_assert_optionsAssertOptionsRuntimeonly fills body if Type already declaredphp-src reference
ext/standard/assert.c—PHP_FUNCTION(assert_options)PHP implementation target
lib/JIT/Builtin/AssertOptionsRuntime.php— declare__compiler_assert_optionsmodule-locally (getNamedFunctionfirst, thenaddFunctionif absent)lib/JIT/Builtin/Type.php— remove always-on empty decl; keepAssertOptionsRuntime::ensureLinkedext/standard/JitAssertOptions.php— ensureLinked before lookup if neededruntime/*.cRepro / gate
Done when
__compiler_assert_optionsadd/registerassert_options(ASSERT_ACTIVE)matches Zend