Category
php-in-php · runtime-shrink · Pillar Trust (#32122 .1 mint class)
Problem
Context::ensureFullStandaloneBodies still eagerly NestedJITs pending-exception / pending-Error ABIs during every full standalone init — peers already made these lazy on the minimal path (#34732 ExceptionBridge / #34769 ErrorBridge):
ExceptionBridge::ensureStandaloneBodies (→ TypeErrorRaise / JitThrow; replaces lib/AOT/runtime/phpc_type_error_raise.c)
ErrorBridge::ensureStandaloneBodies (→ ErrorRaise / AssertionErrorRaise / ReadonlyRaise; replaces lib/AOT/runtime/phpc_error_raise.c)
Standalone {main} already ErrorBridge::ensureLinked / ExceptionBridge::emitClear|emitAbort → ensureLinked before lookup. Leftover Context NestedJIT vs Runtime ABI drift mints type_error_*.1 / error_*.1 (#31894 / #32122).
Also delete the string-helpers NestedJIT block gated on !isStandaloneInitPhase() — ensureFull always beginStandaloneInitPhase() first, so Soundex/Quotemeta/… never run; call sites already ensureLinked (peer ensureMinimal #34578).
php-src reference
PHP implementation target
lib/JIT/Context.php — drop always-on ExceptionBridge/ErrorBridge NestedJIT from ensureFullStandaloneBodies; delete dead string-helpers gate block
- Update
ContextMinimalStandaloneLazyExceptionBridgeRuntimeShrinkTest / ErrorBridge peers that still assert ensureFull keeps them
- New
ContextFullStandaloneLazyExceptionErrorBridgeRuntimeShrinkTest
Repro / verify
./script/phpunit.sh --filter 'ContextFullStandaloneLazyExceptionErrorBridge|ContextMinimalStandaloneLazyExceptionBridge|ContextMinimalStandaloneLazyErrorBridge|ContextFullStandaloneLazyStdlib'
./script/docker-exec.sh -- bash -lc './script/aot-smoke.sh'
Done when
Parent
Category
php-in-php· runtime-shrink · Pillar Trust (#32122.1mint class)Problem
Context::ensureFullStandaloneBodiesstill eagerly NestedJITs pending-exception / pending-Error ABIs during every full standalone init — peers already made these lazy on the minimal path (#34732 ExceptionBridge / #34769 ErrorBridge):ExceptionBridge::ensureStandaloneBodies(→ TypeErrorRaise / JitThrow; replaceslib/AOT/runtime/phpc_type_error_raise.c)ErrorBridge::ensureStandaloneBodies(→ ErrorRaise / AssertionErrorRaise / ReadonlyRaise; replaceslib/AOT/runtime/phpc_error_raise.c)Standalone
{main}alreadyErrorBridge::ensureLinked/ExceptionBridge::emitClear|emitAbort→ensureLinkedbefore lookup. Leftover Context NestedJIT vs Runtime ABI drift mintstype_error_*.1/error_*.1(#31894 / #32122).Also delete the string-helpers NestedJIT block gated on
!isStandaloneInitPhase()—ensureFullalwaysbeginStandaloneInitPhase()first, so Soundex/Quotemeta/… never run; call sites alreadyensureLinked(peer ensureMinimal #34578).php-src reference
Zend/zend_exceptions.c— TypeError / Error pending throwZend/zend_error.c— Error raise / abortPHP implementation target
lib/JIT/Context.php— drop always-on ExceptionBridge/ErrorBridge NestedJIT fromensureFullStandaloneBodies; delete dead string-helpers gate blockContextMinimalStandaloneLazyExceptionBridgeRuntimeShrinkTest/ErrorBridgepeers that still assert ensureFull keeps themContextFullStandaloneLazyExceptionErrorBridgeRuntimeShrinkTestRepro / verify
Done when
ensureFullStandaloneBodieshas noExceptionBridge::ensureStandaloneBodies/ErrorBridge::ensureStandaloneBodies./script/aot-smoke.shstays 8/8lib/AOT/runtime/*.cParent