Category
bug · php-src-strict · AOT · pillar 4
Problem
mb_substr(\"abcdef\", 2, 2) is cd on Zend/VM/JIT, but AOT compile aborts with mb_substr() is not lowered for JIT/AOT in this compiler build (ext/mbstring/mb_substr.php call()).
| Repro |
Zend / VM / JIT (2026-08-02, 8f314121e) |
AOT |
echo mb_substr(\"abcdef\", 2, 2), PHP_EOL; |
cd |
compile fails (LogicException) |
Note: JIT succeeds (likely VM-execute fallback); only standalone AOT requires the missing call() lowering.
php-src reference
PHP implementation target
ext/mbstring/mb_substr.php + new/extend ext/mbstring/JitMb* / lib/JIT/Builtin/ — PHP-in-PHP lowering; do not grow runtime/*.c
Repro
./script/docker-exec.sh -- bash -lc '
cat > /tmp/aot_mb_substr.php <<'"'"'PHP'"'"'
<?php
echo mb_substr(\"abcdef\", 2, 2), PHP_EOL;
PHP
echo -n \"zend=\"; php /tmp/aot_mb_substr.php
echo -n \"vm=\"; php bin/vm.php /tmp/aot_mb_substr.php 2>/dev/null
echo -n \"jit=\"; php bin/jit.php /tmp/aot_mb_substr.php 2>/dev/null
php bin/compile.php -o /tmp/aot_mb_substr /tmp/aot_mb_substr.php && /tmp/aot_mb_substr
'
Done when
Category
bug· php-src-strict · AOT · pillar 4Problem
mb_substr(\"abcdef\", 2, 2)iscdon Zend/VM/JIT, but AOT compile aborts withmb_substr() is not lowered for JIT/AOT in this compiler build(ext/mbstring/mb_substr.phpcall()).8f314121e)echo mb_substr(\"abcdef\", 2, 2), PHP_EOL;cdNote: JIT succeeds (likely VM-execute fallback); only standalone AOT requires the missing
call()lowering.php-src reference
ext/mbstring/mbstring.c—PHP_FUNCTION(mb_substr)ext/mbstring/mbstring.stub.php— arity 4PHP implementation target
ext/mbstring/mb_substr.php+ new/extendext/mbstring/JitMb*/lib/JIT/Builtin/— PHP-in-PHP lowering; do not growruntime/*.cRepro
Done when
cd--repeat 10on the built binarytest/repro// AOT fixture guard