Category
bug · AOT · ExternalMethod null · ext/dom
Problem
Thin AOT leaves DOMDocument::save unbound, so calls resolve to ExternalMethod NULL instead of writing saveXML() bytes and returning the byte count (or false on I/O failure). VM already matches Zend via DocumentSave / VmDom::save (#18435).
| Repro |
Zend / VM |
AOT |
$d->save($tmp) after loadXML('<r>hi</r>') |
32 + file written |
NULL + no file |
./script/aot-smoke.sh was 8/8 before measuring.
php-src reference
PHP implementation target
lib/JIT/DomInstanceMethodJit.php — domdocument::save user-script proxy
ext/dom/VmDomInstanceInvoke.php + ext/dom/VmDomJitDispatch.php — dispatch to VmDom::save
Repro
./script/docker-exec.sh -- bash -lc 'php bin/vm.php test/repro/aot_dom_document_save_null.php'
./script/docker-exec.sh -- bash -lc 'php bin/compile.php -o /tmp/ds.bin test/repro/aot_dom_document_save_null.php && /tmp/ds.bin'
Done when
Parent
DOM/XML AOT correctness lane (peer #35540 validate/schemaValidate ExternalMethod leftovers).
Category
bug· AOT · ExternalMethod null · ext/domProblem
Thin AOT leaves
DOMDocument::saveunbound, so calls resolve to ExternalMethodNULLinstead of writingsaveXML()bytes and returning the byte count (orfalseon I/O failure). VM already matches Zend viaDocumentSave/VmDom::save(#18435).$d->save($tmp)afterloadXML('<r>hi</r>')32+ file writtenNULL+ no file./script/aot-smoke.shwas 8/8 before measuring.php-src reference
ext/dom/php_dom.c—zim_DOMDocument_savePHP implementation target
lib/JIT/DomInstanceMethodJit.php—domdocument::saveuser-script proxyext/dom/VmDomInstanceInvoke.php+ext/dom/VmDomJitDispatch.php— dispatch toVmDom::saveRepro
Done when
./script/aot-smoke.shstays 8/8Parent
DOM/XML AOT correctness lane (peer #35540 validate/schemaValidate ExternalMethod leftovers).