Category
Foundation · php-in-php · runtime-shrink · cold-build / #32122 class
Problem
Context::ensureMinimalUserStandaloneBodies() still eagerly NestedJIT/links StringHtmlspecialchars on every thin AOT user-script init (hello-world / aot-smoke path), even when the script never calls htmlspecialchars:
StringHtmlspecialchars::ensureStandaloneBodies → NestedJIT / bridge (HtmlspecialcharsJitHelper)
Same always-on NestedJIT vs Runtime ABI drift / cold-build surface class as closed #34631 / #34621 / #34612 / #34605 and open peer #34641 (StringTriggerError). Leftover Context NestedJIT vs Runtime ABI drift mints *.1 (#31894 / #32122).
Call site already StringHtmlspecialchars::ensureLinked before lookup (ext/standard/htmlspecialchars.php). Peer #34612 already lazy-dropped HtmlEntities / HtmlspecialcharsDecode for the same reason.
| Repro |
Zend 8.2+ |
AOT thin hello-world |
echo "hi"; (no htmlspecialchars) |
hi |
must not NestedJIT htmlspecialchars ABI during init |
echo htmlspecialchars('<'); |
< |
matches Zend via call-site ensureLinked |
php-src reference
PHP implementation target
lib/JIT/Context.php ensureMinimalUserStandaloneBodies — remove StringHtmlspecialchars::ensureStandaloneBodies
- Keep call-site
ensureLinked in ext/standard/htmlspecialchars.php
- Update peer shrink keep-lists +
ExamplesHelloWorldAotRegressionTest / HtmlspecialcharsDecodeRuntimeShrinkTest
- Unit shrink test +
./script/aot-smoke.sh 8/8
Repro
./script/aot-smoke.sh
./script/docker-exec.sh -- bash -lc 'echo '\''<?php echo htmlspecialchars("<x>");'\'' > /tmp/hs.php && php bin/compile.php -o /tmp/hs.bin /tmp/hs.php && /tmp/hs.bin'
Done when
Category
Foundation· php-in-php · runtime-shrink · cold-build / #32122 classProblem
Context::ensureMinimalUserStandaloneBodies()still eagerly NestedJIT/linksStringHtmlspecialcharson every thin AOT user-script init (hello-world / aot-smoke path), even when the script never callshtmlspecialchars:StringHtmlspecialchars::ensureStandaloneBodies→ NestedJIT / bridge (HtmlspecialcharsJitHelper)Same always-on NestedJIT vs Runtime ABI drift / cold-build surface class as closed
#34631/#34621/#34612/#34605and open peer#34641(StringTriggerError). Leftover Context NestedJIT vs Runtime ABI drift mints*.1(#31894 / #32122).Call site already
StringHtmlspecialchars::ensureLinkedbefore lookup (ext/standard/htmlspecialchars.php). Peer#34612already lazy-dropped HtmlEntities / HtmlspecialcharsDecode for the same reason.echo "hi";(no htmlspecialchars)echo htmlspecialchars('<');<php-src reference
ext/standard/html.c—PHP_FUNCTION(htmlspecialchars)#34612HtmlEntities/Decode lazy;#34641StringTriggerError lazyPHP implementation target
lib/JIT/Context.phpensureMinimalUserStandaloneBodies— removeStringHtmlspecialchars::ensureStandaloneBodiesensureLinkedinext/standard/htmlspecialchars.phpExamplesHelloWorldAotRegressionTest/HtmlspecialcharsDecodeRuntimeShrinkTest./script/aot-smoke.sh8/8Repro
Done when
ensureMinimalUserStandaloneBodiesdoes not callStringHtmlspecialchars::ensureStandaloneBodieshtmlspecialchars('<')still matches Zend./script/aot-smoke.shstill 8/8