Category
enhancement · php-in-php · runtime-shrink / NestedJIT · peer #34732 / #34695 · cold-build .1 mint class (#32122 / #31894)
Problem
Context::ensureMinimalUserStandaloneBodies still eagerly ErrorBridge::ensureStandaloneBodies (AssertionErrorRaise + ErrorRaise + ReadonlyBridge). Thin AOT hello-world NestedJITs pending-Error ABI during init even when {main} never raises.
Leftover Context NestedJIT vs Runtime ABI drift mints *.1 and fails module verify at vendor/ircmaxell/php-llvm/lib/LLVMAbstract/Module.php:180 (same class as #32122).
ExceptionBridge was already made lazy (#34732). ErrorBridge is the next always-on sibling in ensureMinimal.
PHP implementation target
lib/JIT/Context.php — remove ErrorBridge::ensureStandaloneBodies from ensureMinimalUserStandaloneBodies (keep in ensureFullStandaloneBodies)
lib/JIT/Builtin/ErrorRaise.php / AssertionErrorRaise.php — ensureLinked implements standalone bodies; emitClear/emitAbort/emitRaise call ensureLinked before lookup
lib/JIT/Builtin/ReadonlyRaise.php — emitClear/emitAbort call ensureLinked before lookup
- No new
runtime/*.c (floor already empty; ErrorBridge replaced phpc_error_raise.c)
Repro / verify
./script/aot-smoke.sh
./script/docker-exec.sh -- bash -lc 'printf "%s\n" "<?php echo \"hello\n\";" > /tmp/h.php; PHP_COMPILER_HELPER_RUNTIME_O=0 php bin/compile.php -o /tmp/h.bin /tmp/h.php && /tmp/h.bin'
./script/phpunit.sh --filter ContextMinimalStandaloneLazyErrorBridge
Done when
Parent
Category
enhancement· php-in-php · runtime-shrink / NestedJIT · peer #34732 / #34695 · cold-build .1 mint class (#32122 / #31894)Problem
Context::ensureMinimalUserStandaloneBodiesstill eagerlyErrorBridge::ensureStandaloneBodies(AssertionErrorRaise + ErrorRaise + ReadonlyBridge). Thin AOT hello-world NestedJITs pending-Error ABI during init even when{main}never raises.Leftover Context NestedJIT vs Runtime ABI drift mints
*.1and fails module verify atvendor/ircmaxell/php-llvm/lib/LLVMAbstract/Module.php:180(same class as #32122).ExceptionBridge was already made lazy (#34732). ErrorBridge is the next always-on sibling in
ensureMinimal.PHP implementation target
lib/JIT/Context.php— removeErrorBridge::ensureStandaloneBodiesfromensureMinimalUserStandaloneBodies(keep inensureFullStandaloneBodies)lib/JIT/Builtin/ErrorRaise.php/AssertionErrorRaise.php—ensureLinkedimplements standalone bodies;emitClear/emitAbort/emitRaisecallensureLinkedbefore lookuplib/JIT/Builtin/ReadonlyRaise.php—emitClear/emitAbortcallensureLinkedbefore lookupruntime/*.c(floor already empty; ErrorBridge replacedphpc_error_raise.c)Repro / verify
./script/aot-smoke.sh ./script/docker-exec.sh -- bash -lc 'printf "%s\n" "<?php echo \"hello\n\";" > /tmp/h.php; PHP_COMPILER_HELPER_RUNTIME_O=0 php bin/compile.php -o /tmp/h.bin /tmp/h.php && /tmp/h.bin' ./script/phpunit.sh --filter ContextMinimalStandaloneLazyErrorBridgeDone when
./script/aot-smoke.shstays 8/8lib/AOT/runtime/*.cParent