Category
php-in-php · runtime-shrink · thin AOT init (#32122 .1 mint class)
Problem
Context::ensureMinimalUserStandaloneBodies() still eagerly ExceptionBridge::ensureStandaloneBodies() during thin standalone init. That NestedJITs TypeErrorRaise / JitThrow ABI for every hello-world AOT binary even though the thin {main} path never clears/aborts TypeError pending (isThinStandaloneAotMain skips ExceptionBridge::emitClear / emitAbort).
Peer shrinks (#34578→#34695) already moved NestedJIT ABIs to call-site ensureLinked. Leftover Context NestedJIT vs Runtime ABI drift mints *.1 (#31894 / #32122).
| Surface |
Today |
After |
| thin hello-world init |
eagerly TypeErrorRaise + JitThrow |
no ExceptionBridge during init |
| TypeError / illegal offset / throw |
works (always-on) |
works (TypeErrorRaise::ensureLinked implements standalone bodies) |
php-src reference
PHP implementation target
lib/JIT/Builtin/TypeErrorRaise.php — ensureLinked implements bodies for STANDALONE too (restore insert block like ErrorRaise); emitClear/emitAbort ensure before lookup
lib/JIT/Context.php — drop always-on ExceptionBridge::ensureStandaloneBodies from ensureMinimalUserStandaloneBodies (keep in ensureFullStandaloneBodies)
- Update
ContextMinimalStandaloneLazy* keep-lists + new shrink test
- No new
runtime/*.c
Repro / Done when
Category
php-in-php· runtime-shrink · thin AOT init (#32122 .1 mint class)Problem
Context::ensureMinimalUserStandaloneBodies()still eagerlyExceptionBridge::ensureStandaloneBodies()during thin standalone init. That NestedJITsTypeErrorRaise/JitThrowABI for every hello-world AOT binary even though the thin{main}path never clears/aborts TypeError pending (isThinStandaloneAotMainskipsExceptionBridge::emitClear/emitAbort).Peer shrinks (#34578→#34695) already moved NestedJIT ABIs to call-site
ensureLinked. Leftover Context NestedJIT vs Runtime ABI drift mints*.1(#31894 / #32122).TypeErrorRaise::ensureLinkedimplements standalone bodies)php-src reference
Zend/zend_exceptions.c— throw / pending exception buffersZend/zend_execute_API.c— TypeError raise pathPHP implementation target
lib/JIT/Builtin/TypeErrorRaise.php—ensureLinkedimplements bodies for STANDALONE too (restore insert block likeErrorRaise);emitClear/emitAbortensure before lookuplib/JIT/Context.php— drop always-onExceptionBridge::ensureStandaloneBodiesfromensureMinimalUserStandaloneBodies(keep inensureFullStandaloneBodies)ContextMinimalStandaloneLazy*keep-lists + new shrink testruntime/*.cRepro / Done when
ensureMinimalUserStandaloneBodieshas noExceptionBridge::ensureStandaloneBodies./script/aot-smoke.shstays 8/8php bin/compile.php -o /tmp/h.bin -r 'echo "hi\n";' && /tmp/h.bin→hi./script/phpunit.sh --filter 'ContextMinimalStandaloneLazy|ExceptionBridgeRuntimeShrink'greenruntime/*.c